轨道3布线.如何为正在发生的特定操作创建/controller/id/action路由格式



好的,这是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操作。

有什么想法吗?如果你的答案正确,我一定会给你打分。谢谢Alex

尝试通过以下sytax使用。。。

  match "contact_infos/:id/edit" , :to => "contact_infos#edit", :as => 'contact_infos_edit'

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

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

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

最新更新