Rails应用开发体验(2)

书接上回[url=http://lj6684.iteye.com/blog/553979]Rails应用开发体验(1)[/url]

这次开始记录一些具体开发的技术问题了...

业务信息的基本CRUD不再废话了,通过静态scaffold产生的页面具备全部功能,根据自己需要调整整合即可;

[size=x-large][b]文件上传[/b][/size]
应用中需要用到图片上传功能,文件上传是应用开发中遇到的第一个“棘手”问题,手头的Rails开发书籍和网上找到的资料都有对Rails处理图片上传的处理代码,但好像都是点到为止,说的不是很全面,自己磕磕绊绊总算开发通过了,将一些细节记录下来为其他开发者提供个参考;
首先文件上传使用的表单控件为[color=blue]form.file_field[/color]。我这里处理文件上传主要是图片,不打算将图片直接保存在数据库字段中,而是将图片根据规则重命名后保存在指定图片文件夹中,数据库字段记录图片文件名。
关于图片直接随Model属性保存到数据库字段中的方法我就不详细说了,书上和网上介绍这种方式的示例很多,主要说一下Server端如何对上传文件进行再处理。
使用这个控件后前台页面直接就会展现文件上传控件,关键是服务端如何接收上传的文件,开发时一定要注意:
form.file_field中指定的object_name即为Model中处理文件上传方法的function_name,[color=red]object_name 和 function_name 必须保持一致[/color](注意下面2段示例代码中的img);
[b]View示例[/b]

<tr>
<td>会员头像:</td>
<td><%= f.file_field :img %></td>
</tr>

[b]Model示例[/b]

class Item < ActiveRecord::Base

# 处理上传文件
def img=(file)
file_name = file.original_filename
file_data = file.read

# 将文件重命名后保存到指定文件夹
file_name = Time.now.strftime("%y%m%d%H%M%S") + "." + file_name.split(".")[-1]
# 这里的self.img_url是Model的真实属性,数据库中将保存此img_url
self.img_url= file_name

File.open(RAILS_ROOT + "/public/images/template/" + file_name, "wb") { |f| f.write(file_data) }
end
end


[size=large][b]时间格式化[/b][/size]
时间格式化在显示时经常要用到,比较容易。使用[color=blue]strftime[/color]方法,具体的格式化关键字自己去查API吧;

# 将当前日志格式化为 09-12-28 14:33
time_str = Time.now.strftime("%y%m%d %H:%M")


[size=large][b]Model中还有哪些属性[/b][/size]
这段可能是废话,但起码我第一次开发时不太了解,也记录下来吧。除了我们generate scaffold时显示声明的Model中的属性,每个Model对象还有3个自动产生的属性;
1. id
2. created_at
3. updated_at
字段含义很明显,根据需要时选择调用吧;

[size=large][b]日期控件date_select[/b][/size]
Rails中自带的日期控件[color=blue]form.date_select[/color]非常方便,直接显示年月日可选列表;但默认生成出来的可选日期范围是当前时间前后各5年,我这里需要用日期控件表示会员生日,前5年一定不够用啊。查找API,里面有明确可设参数说明,对我有用的:
1. 年份开始时间、结束时间可定,通过 :start_year, :end_year 指定
2. 月份时间不要英文的,直接显示数字,通过 :use_month_numbers 指定
3. 默认年份为xxxx,通过 :default 指定
[b]示例代码[/b]

<%= f.date_select :birthday, :default => {:year => 1980, :month => 1, :day => 1}, :use_month_numbers => true, :start_year => 1960, :end_year => 2000 %>


今天先记录到这里吧,To Be Continue...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值