【问题标题】:Rails 3 routing. How to create /controller/id/action routing format for specific action taking place?Rails 3 路由。如何为发生的特定操作创建 /controller/id/action 路由格式?
【发布时间】:2013-02-07 08:21:40
【问题描述】:

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

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

【问题讨论】:

  • 好吧,我刚刚想通了。正确答案如下!!控制器:contact_infos 匹配 'contact_infos/:id/edit' => 'contact_infos#edit' end
  • 在这种情况下,您不仅可以,而且should 可以回答您自己的问题,因此对其他人有用。

标签: ruby-on-rails ruby routing


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多