Rail3路线[编辑问题]

时间:2011-08-09 19:34:15

标签: ruby-on-rails-3 routes

示例我已将路由配置为

match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'
resources :cellphones

当我放置localhost/cellphones/nokia3323/lion之类的东西时,一切都还可以但我无法编辑手机,因为它具有相同的结构localhost/cellphones/edit/4

2 个答案:

答案 0 :(得分:1)

先前定义的路由优先,因此您可以通过撤消已声明路由的顺序来再次访问编辑路由。由于/cellphones/edit/:id的路由比{{1}更具限制性如果路线的第二部分是“编辑”,则编辑路线将匹配,如果是其他路线,则会传递到您的其他路线。

但是,您很可能实际上没有/cellphones/:permalink/:charger路由,因为/cellphones/edit/:id创建的内容是resources :cellphones,因为两者都很难区分/cellphones/:id/edit将路径的通配符部分作为第二段。

解决问题的最简单方法是更改​​/cellphones/:permalink/:charger路线,以便更容易区分。您可以使用类似/cellphones/:permalink/:charger(永久链接的“p”)或其他任何易于与/cellphones/p/:permalink/:charger创建的RESTful路由区别开来的内容。

还有一些其他方法可以处理它,例如使用segment contraintsadding more restful actions

答案 1 :(得分:0)

我找到了解决方案,只需更改顺序

resources :cellphones
match '/cellphones/:permalink/:charger', :controller => 'mycontroller', :action => 'myaction'