我正在尝试在rails中创建干净的URL。我已经安装了PermalinkFu,我可以很好地生成链接。我想做的是保留我的RESTful资源。有没有办法可以超载:
map.resources :location
返回:永久链接变量而不是:id?
与我的创作类似:
map.connect 'location/:permalink' :controller => 'location', :action => 'show'
旁注:处理固定链接的最佳做法是什么,如果它们仅用于显示视图/显示操作,那么使用:id进行编辑/销毁/等?我是否应该关注控制器使用:id而不是:permalink作为变量名?
答案 0 :(得分:2)
这是解决这个问题的方法:
在模型中使用to_param方法位置:
def to_param
permalink
end
并在您的routes.rb
中map.resources :location
无需为固定链接添加规则
然后你可以在你的控制器中找到这样的
@location = Location.find_by_permalink params[:id]
希望它有效。
答案 1 :(得分:0)
寻找这个问题的答案。 :path_prefix似乎应该解决这个问题,但我不明白应该如何使用它。
答案 2 :(得分:0)
您是否有理由无法覆盖to_param
模型中的Location
方法?瑞恩贝茨有Railscast that explains how to do this。
如果你想成为一个纯粹主义者,那么你应该使用固定链接进行所有操作,但使用数字ID进行编辑和销毁操作无疑更方便。我想这取决于你是否受到查看HTML并能够查看记录的实际主键的人的困扰。有些人可能会认为这是一个安全漏洞。