利用to_param实现Ruby on Rails 的URL优化
来源:互联网 发布:片头片尾制作软件 编辑:程序博客网 时间:2024/05/16 10:10
Active Model Conversions
Handles default conversions: to_model, to_key and to_param.
to_param()
Returns a string representing the object’s key suitable for use in URLs,or nil if persisted? is false
在线资料:
http://my4java.itpub.net/post/9983/213158
http://www.thoughtrails.com/episodes/55-beautiful-routes-for-articles-on-rails3
同时使用一个永久性的 id 和一个完美的原文描述。为什么不使用 /accounts/edit/12-john-doe 来代替丑陋的 /accounts/edit/12 或脆弱的 /accounts/edit/john-doe 呢。你的代码有它需要查寻的用户 “12”,即使它以后更改它的名字为 “john-d-doe” ,而且你的用户及搜索爬虫都有 “john-doe”来使用。
实现上述想法很简单,因为 Rails 把 :id 看做是路由内的一个特殊的参数。它的特殊性是因为它试图在你创建 URL 时,在被传递的所有对象上调用 to_param 方法。这就说明了为什么 url_for :id => @account 等效于 url_for :id => @account.id ,因为活动记录模型有一个缺省的 to_param 方法,它返回对象的 id 。
你所要做的就是为你的模型定义自己的 to_param() 方法,并确保你没有明确地在你的 url_for 及 link_to 内包含 .id ,因为包含的话你将会跳过对你自己的 to_param 方法的调用。
class Account < ActiveRecord::Base
def to_param
"#{id}-#{full_name.gsub(/[^a-z1-9]+/i, '-')}"
end
end
当然了,这种解决办法的第二部分是,确保你的动作能够处理这
validates :name, :presence => true
validates :title, :presence => true,
:length => { :minimum => 5 }
has_many :comments, :dependent => :destroy
has_many :tags
accepts_nested_attributes_for :tags, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
def to_param
"#{id}-#{name.gsub(/[^a-z0-9]+/i, '-')}"
end
end
- 利用to_param实现Ruby on Rails 的URL优化
- ruby on rails 优化rails查询
- 利用ruby on rails 快速建立一个简单的项目
- 受限环境下的Ruby On Rails程序优化
- Ruby on rails 或 Ruby Goliath 利用redis + sidekiq 实现异步处理机制
- ruby on rails 的书
- Ruby on Rails的神奇
- ruby on rails的session
- ruby on rails的session
- Ruby On Rails -- Rails的安装
- Ruby on Rails性能优化七剑
- Ruby on Rails性能优化七剑
- Ruby on Rails 怎么实现整个网站的index
- 在Ruby On Rails中实现Mail发送的功能
- ruby on rails 注册登录模块的简单实现
- ruby on rails入门系列--ruby和rails的安装
- [Ruby on Rails Tutorial]04-Rails 背后的 Ruby
- ruby on rails 4 中利用 remote:true 实现 ajax ,小记
- hacking exposed VOIP: preface
- Wince内核的裁剪
- 【分享】用人成败的三句话
- POJ 1274The Perfect Stall (二分图最大匹配问题,匈牙利算法实现)
- 第三章:标准库类型
- 利用to_param实现Ruby on Rails 的URL优化
- Joomla组件学习之后台com_admin组件-系统信息
- 3月9日
- LINQ自定义真分页(尚未添加多字段动态查询与多字段排序)
- 汪教授的离散数学-2011-03-08 谓词与量词2
- Java的Excel导出功能
- 字符串截取substr substring slice
- fedora 使用技巧
- 关于java初级J2SE谁能帮我传个课程总结文档