May 01 2008

rails2.0里使用scaffold

Posted by admin

Tags:

在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了。

Filed under : technology | No Comments »
Apr 14 2008

打造可复用的版权信息

Posted by admin

Tags:

通常我们会在网站或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

Filed under : technology | 1 Comment »
Apr 12 2008

缩短网址功能

Posted by admin

Tags:

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

很简陋的,仅供参考

Filed under : technology | No Comments »