2013-10-05 71 views
1

Ruby on Rails 4.0。我有一個「專業」模型,「管理員」可以使用標準資源路線進行修改。但是,也有一個單獨的面向消費者的控制器,用於以漂亮的方式顯示這些「特色」。因此,我有以下途徑:使用下劃線而不是空格的路由

get "specialty/:name" => "site#specialty", as: :site_specialty 
resources :specialties 

該網站#專業控制器操作如下:

def specialty 
    @specialty = Specialty.find_by_name(params[:name]) 
end 

這導致在URL中像下面%的逃脫路線:

/specialty/project%20management 

我寧願有這樣的事情:

/specialty/project_management 

如何用下劃線替換空格,然後在控制器操作中查找正確的模型?在安全的任何旁註還讚賞使用to_param

+0

有沒有你的視圖或助手代碼的例子你在哪裏使用'url_for'?我們需要看到這一點,看看你是如何產生這些路徑 –

回答

1

通過@manishie答案是好的,但也存在爲您處理此(以及更多)的寶石,名爲Friendly ID。它基於前面提到的相同的to_param技巧,但也有處理其他特殊字符和處理碰撞的選項。

class Specialty < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name 
end 

Specialty.friendly.find(params[:name]) 
相關問題