2013-10-05 34 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]) 
相关问题