我有一个对象,必然有一个看起来像“1.3.6.1.4.1.25623.1.0.14377”的id。当我尝试创建一个使用id的链接(例如link_to my_object(object.id)
)时,Rails 3 barfs并说没有路由存在。
我已经通过尝试link_to my_object(1)
验证了我的有效路线。 Rails在创建此链接时没有问题。
有什么想法吗?
提前致谢!
答案 0 :(得分:4)
我已经弄明白了...默认情况下,当在参数字段中找到句点(。)时(在这种情况下为id),Rails会发抖。要更改此行为,只需在路由语句中添加:constraints指令,并明确告诉它参数应该是什么样子。在我的情况下,事实证明以下问题解决了这个问题:
resources :nvts, :constraints => { :id => /[0-9\.]+/ }
感谢Avdi Grimm他最有帮助的博文。
答案 1 :(得分:0)
也许您应该在模型中覆盖方法to_param
,Rails使用它来生成路由ID。
通常它看起来像这样:
def to_param
object.parameterize
end
它获取模型的名称并在路线中用作id。