0

我正在使用这个 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

它仍然将我定向到 id 为 34 的用户。

如何强制它转到 404 页面或 root_path?

4

1 回答 1

0

由于您的搜索是在 id 而不是用户名上执行的,因此它不会真正关心 url 中的 id 是什么值。您可以扩展您的显示操作以根据 id、名字和姓氏来查找用户,但我认为这最终不会成为一个非常干净的解决方案。

相反,我强烈建议您查看Friendly_ID gem,它可以让您通过非常少的配置轻松生成带有非 pk 字段(例如用户名)的漂亮 URL。关于这个主题有一个很好的 railscast:漂亮的 urls withfriendlyid

于 2012-11-05T22:09:58.490 回答