Better looking URLs with friendly_id

在rails中,我们默认的URLs在routes.rb中的定义是这样的

map.connect ':controller/:action/:id'

这为我们生成/contrller_name/action_name/id 这个样式的URLs
而我们可以编写to_params方法来定义一个比较友好的url:

def to_params
"#{id}-#{title}"
end

当to_i被调用后,"123-hello-world"会转换成为123
>> "123-hello-world-1".to_i
=> 123

但to_params的使用,比较的单一,考虑下面的这种方式:
def to_params
"#{title}"
end
结果是无法运行。

现在,friendly_id插件提供了这样的一个功能,它可以让你构建非常友好的URLs
Homepage: http://github.com/norman/friendly_id

建立测试项目:
>>rails friendly_id
>>cd friendly_id
>>rake db:create
>>ruby script/generate post title:string content:text
>>rake db:migrate

安装:
1. gem install friendly_id
2. script/generate friendly_id
3. rake db:migrate

使用:
1. 在environment.rb的Rails::Initializer.run do |config|中添加:
config.gem "friendly_id"
2. 在Model中增加:
has_friendly_id :title, :use_slug => true

下面,我们就可以使用http://127.0.0.1:3000/posts/first这样的URL了。

其实现原理,只要看一下生成的表,我想,大家就知道了:

[img]http://dl.iteye.com/upload/attachment/154465/01b6e9d0-7463-38a0-a59d-bb22cdc261c6.jpg[/img]

那如果post的title不唯一呢?怎么办?借XXX书里的说法,自己试一下,就知道啦。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值