【问题标题】:route rails 2 to rails 4 "map.connect"将rails 2路由到rails 4“map.connect”
【发布时间】:2014-03-29 10:15:04
【问题描述】:

我在 rails 2.3.14 中有这条路线,我想将其转换为 rails 4.0.3

map.connect ':controller/:action/:id'

map.connect ':controller/:action/:id.:format'

我尝试使用匹配,但给我错误。

【问题讨论】:

  • 你尝试了什么,错误是什么?
  • 匹配':controller/:action/:id' 匹配':controller/:action/:id.:format'
  • gems/actionpack-4.0.3/lib/action_dispatch/routing/mapper.rb:191:in normalize_conditions!': You should not use the match` 方法在您的路由器中没有指定 HTTP 方法。 (RuntimeError) 如果你想将你的动作暴露给 GET 和 POST,添加via: [:get, :post] 选项。如果您想将您的操作公开给 GET,请在路由器中使用 get:而不是:匹配“controller#action”做:获取“controller#action”

标签: ruby-on-rails routes migrate


【解决方案1】:

好的,就这样

 match ':controller/:action/:id', via: [:get, :post]

【讨论】:

  • 尽可能不鼓励这样做,请考虑重新组织您的路由文件,以便您单独指定路由而不是依赖此模式。它允许您执行发布操作,反之亦然
  • 是的,我知道。我猜这个评论属于提问者。我回答了他的问题。我知道这是一种不好的做法。
  • 感谢您的回答和建议,我会考虑。
  • @ParitoshPiplewar 我同意这可能确实属于 OP,但是通过将其发布在已接受的答案旁边意味着更多考虑这种方法的人会阅读它
【解决方案2】:

如果可能,请考虑重构您的路由文件,而不是使用包罗万象的方法。在大多数情况下,您会知道用户可能在您的网站上执行的所有操作,并且您应该仅限于此。

通过添加 catch all,您可以通过 get 访问每个操作,这可能很危险。 http://darwinweb.net/articles/the-problem-with-rails-catch-all-route

对此进行了很好的讨论

如果您仍然想这样做并了解风险,请查看@ParitoshPiplewar 的回答

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多