2011-03-23 100 views
3

將URL映射到數據庫ID的最有效方式是什麼?Rails 3和乾淨的URL

實施例:

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

在路由newspaper_controller得到articlehow-interesting-is-internet

我應該在哪裏以及如何存儲乾淨的URL和ID的映射?

+0

爲什麼不使用例如文章標題爲slu??像這樣,只要標題/ slug在表中是唯一的,就不需要任何映射。 – polarblau 2011-03-23 22:04:21

回答

2

FriendlyId是一個很好的插件(https://github.com/norman/friendly_id

它允許您指定將用於創建id(名稱或描述或任何)的數據庫列,它負責使所有工作都正常工作。

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

我喜歡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