Posts Tagged ‘Rails’
rails2.0里使用scaffold
在Rails2.0中,scaffold从核心中移出,转变成插件,使用时,我们需要在所在项目里用下面的命令下载:
ruby script/plugin install scaffolding
配置好数据库之后,像往常一样用
ruby script/generate scaffold yourmodel [field:attribute field:attribute field:attribute]
然后
rake db:migrate
就可以像Rail1.2.3里使用了。代码变化相当大,我之前没用scaffold,现在用装上是为了看看Rails2中生成的scaffold是如何render渲染的,看了看,原来2.0中干脆不render了。
打造可复用的版权信息
通常我们会在网站或blog里放上自己的版权信息如:
© Copyright <%= current_year -%>. All Rights Reserved.
这个current_year辐助方法定义在application里的helper里。定义如下:
# add to application_helper.rb
module ApplicationHelper
def current_year
Time.now.strftime('%Y')
end
end
但这样,只能得到当年的时间,但下一年呢,再一下年呢,网站能赚钱了,运营十年,二十年,我们难道要每年都去修改代码?不,我们坚决不这样做,Rails就是don’t repeat yourself。我们来创建一个可复用的current_year方法吧。
def current_year
Time.now.year
end
def year_range( start_year = current_year )
[start_year, current_year].sort.uniq.join(’-')
end
将参数传给start_year变量,再将起始年和当年用join方法连接起来。如果不传递参数,则用current_year输出当年的年数。
使用
<%= year_range(2005) -%>
显示结果是 2005-2008。
这个helper已经被作者制作成gem了,可以从GitHub下载。
http://github.com/robbyrussell/year_after_year/
文章来源: DRY(a): Year After Year
go.6.cn是功能一个把长网址转为短网址进行跳转。其原理可以说是当用户插入数据时,查询数据库是否存在该网址,有则插入,没则新建并返回给该网址。
用Rails来实现这个功能,可以用find_or_create_by_来实现,代码如下。
def index
@ad = Ad.new
end
def save
ad = Ad.find_or_create_by_tu(params[:ad]['tu'])
flash[:notice] = ad.id
redirect_to(:action => ‘index’)
end
def page
@ad = Ad.find(params[:id])
if @ad.tu =~ /^http:\/\//
redirect_to(@ad.tu)
else
redirect_to(”http://#{@ad.tu}”)
end
end
end
view文件
<% if flash[:notice] -%>
127.0.0.1:3000/page/<%= flash[:notice] %>
<% end -%>
#把[和]去掉
Ad表结构
def self.up
create_table :ads do |t|
t.column :id, :int
t.column :tu, :string
end
add_index :ads, :tu, :unique =>true
#添加索引
end
很简陋的,仅供参考
