Ruby on Rails 4.0。我有一个“专业”模型,“管理员”可以使用标准资源路由进行修改。然而,还有一个单独的面向消费者的 Controller ,用于以漂亮的方式显示这些“特色菜”。因此我有以下路线:
get "specialty/:name" => "site#specialty", as: :site_specialty
resources :specialties
site#specialty Controller 操作如下:
def specialty
@specialty = Specialty.find_by_name(params[:name])
end
这会产生类似于以下百分比转义路由的 URL:
/specialty/project%20management
我宁愿有这样的东西:
/specialty/project_management
如何用下划线替换空格并仍然在 Controller 操作中查找正确的模型?任何有关安全性的附注也值得赞赏
最佳答案
尝试使用to_param:
型号:
class Specialty < ActiveRecord::Base
def to_param
name.parameterize
end
end
Controller :
def specialty
@specialty = Specialty.find(params[:id])
end
应该可以了...
引用文献:
关于ruby-on-rails - 使用下划线代替空格的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202562/