Rails 3路由。如何为特定的操作创建/ controller / id / action路由格式?

时间:2013-02-07 08:21:40

标签: ruby-on-rails ruby routing

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

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

但这条路线打破了我的全部路线。

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

因此我的申请无法接受。

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

  controller :contact_infos do

  end

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

有什么想法吗? 如果你给出了正确答案,我一定会给你评价。 谢谢! 亚历

2 个答案:

答案 0 :(得分:0)

尝试使用以下语法...

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

答案 1 :(得分:0)

请注意,虽然不是你问题的一部分,但抓住所有路线都是一个非常糟糕的主意。

一段时间以来,这被认为是危险的,不建议这样做。它将允许应用程序响应所有HTTP方法的操作(例如,对于应该真正是PUT的事物的GET)。这会使您暴露于CSRF攻击,因为只有PUT,POST和DELETE请求才需要CSRF令牌。

您应该始终使用路由助手为您提供的所有资源明确路由,以确保应用只响应正确的请求(例如DELETE请求进行销毁行为)