rails routing-不会在错误的地址上转到404

时间:2012-11-05 18:58:18

标签: ruby-on-rails-3 routing

我正在使用这个to_param

def to_param
    [id, [first_name.parameterize,last_name.parameterize].join("_")].join("-")
end

生成一个看起来像

的地址
http://www.example.com/users/34-joe_smith

但如果我将地址更改为

http://www.example.com/users/34-joe_notsmith

它仍指向身份为34的用户。

如何强制执行404页面或root_path?

1 个答案:

答案 0 :(得分:0)

由于您的搜索是针对id而不是用户的名称执行的,因此它不会真正关心url中id的成功值。您可以扩展您的show动作以根据ID,名字和姓氏查找用户,但我认为这不会成为一个非常干净的解决方案。

相反,我强烈建议您查看Friendly_ID gem,这样您就可以轻松地使用非pk字段(例如用户名)生成漂亮的URL。关于这个主题有一个很好的轨道广播:pretty urls with friendlyid