将URL映射到数据库ID的最有效方法是什么。
示例:
/newspaper/article/how-interesting-is-internet
在路由newspaper_controller
获取article
和how-interesting-is-internet
时。
我应该在何处以及如何存储干净的URL和ID的映射?
答案 0 :(得分:2)
您应该查看to_param
方法
class Article < AR::Base
def to_param
self.cool_url # cool_url is column in your articles table with your clean url
end
end
所以我的建议是将您的clean_url存储在您的文章模型中,并附上您的ID和其他内容
答案 1 :(得分:2)
FriendlyId是一个很好的插件(https://github.com/norman/friendly_id)
它允许您指定将用于创建id(名称或描述或其他)的数据库列,它可以使一切正常工作。
答案 2 :(得分:1)
我也喜欢friendlyId方法
我使用clasic博客示例处理此类事情的方式
博客控制器{按日期获取所有帖子}
帖子控制器{}
的路线强> 的
resource :blog do
resources :posts
end
应用/型号/ Post.rb 强>
class Post < ActiveRecord::Base
belongs_to :site
has_friendly_id :title, :use_slug => true
end
然后你最终得到一些不错的路径
blog_path #Blog Index
blog_post(p) #Post Show
答案 3 :(得分:0)
使用to_param方法创建自定义网址,例如http://myblog.com/posts/2012-04-22/123-my-first-post.html
class Post < ActiveRecord::Base
def to_param
"/posts/#{published_at}/{id}-#{title.parameterize}.html"
end
end