1

好的,这是 rails 3 应用程序的基本路由问题。我有一个名为contact_infos 的控制器。对于编辑操作,我想匹配如下 /contact_infos/id/action 的路线。我这样做的原因是专门针对 ajax 功能。这是我到目前为止所做的。这条路线运行良好。

match ':controller(/:id(/:action))(.:format)'

但是这条路线打破了我的包罗万象的路线。

match ':controller(/:action(/:id))(.:format)'

所以这对我的申请是不可接受的。

我知道我可以通过以下方式定位我的特定路线

  controller :contact_infos do

  end

但我不确定如何将 url 匹配为 /contact_infos/id/action 仅用于编辑操作而不破坏任何其他 contact_infos 操作。

有任何想法吗?如果你给出正确的答案,我肯定会给你打分。谢谢!亚历克斯

4

2 回答 2

0

尝试通过以下语法使用...

  match "contact_infos/:id/edit" , :to => "contact_infos#edit", :as => 'contact_infos_edit'
于 2013-02-07T09:05:22.983 回答
0

请注意,虽然不是您的问题的一部分,但一条包罗万象的路线是一个非常糟糕的主意。

一段时间以来,这一直被认为是危险的,因此不建议这样做。它将允许应用程序响应所有 HTTP 方法的操作(例如 GET 用于真正应该被 PUT 的东西)。这会使您面临 CSRF 攻击,因为 CSRF 令牌仅用于 PUT、POST 和 DELETE 请求。

您应该始终使用路由助手为您提供的所有资源显式路由,以确保应用程序只会响应正确的请求(例如,删除操作的 DELETE 请求)

于 2013-02-07T09:23:26.360 回答