Rails 3和干净的URL

时间:2011-03-23 22:01:58

标签: ruby-on-rails ruby-on-rails-3 routing

将URL映射到数据库ID的最有效方法是什么。

示例:

/newspaper/article/how-interesting-is-internet

在路由newspaper_controller获取articlehow-interesting-is-internet时。

我应该在何处以及如何存储干净的URL和ID的映射?

4 个答案:

答案 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