【问题标题】:Differences betwen 2.3 and 4.2.6 routing2.3和4.2.6路由的区别
【发布时间】:2016-04-11 05:58:34
【问题描述】:

在 2.3 中,有

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

我尝试访问例如“/resource/edit”,找到控制器资源和动作编辑没有问题。

在 4.2 中,我使用

  get ':controller/:action/:id'

“/resource/edit”不起作用。我猜是因为没有:id?

如果我改成

get ':controller/:action(/:id)'

这使得 :id 可选,然后一切正常。

所以我的问题是:

1) 我的猜测正确吗?即:对于 2.3,您不需要定义可选,它将是可选的,但对于 4.2,您必须定义可选以使其成为可选。

2) 对于 2.3,一次

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

已定义,是否为所有 GET/POST/PATCH/DELETE 等定义?对于 4.2,我必须定义以下内容?

get ':controller/:action(/:id)'
post ':controller/:action(/:id)'

一一等等?

  1. 您还能想到其他重大差异吗?

谢谢。

【问题讨论】:

  • 你可以在这里找到很多信息:guides.rubyonrails.org/routing.html
  • 但他们只是没有告诉你区别,或者指出哪些代码被破坏了。我正在从 2.3 迁移到 4,我需要确切知道发生了什么变化。现在我能做的就是看看测试中出了什么问题,并尝试猜测是不是因为规则改变了。

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-2


【解决方案1】:

(1) 是的,这是正确的。

(2) 使用资源路由替代在同一路由上定义、GET、POST、PATCH、DELETE:

resources :resource_name

这将为名为 resource_name 的模型定义 new (GET)、create (POST)、edit (GET)、update (PUT/PATCH) 和 destroy (DELETE) 操作。 Rails 文档在这里有更好的解释:http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

(3) 可能还有其他差异,尽管我使用 Rails 2.x 已经有一段时间了。我建议您习惯 Rails 3+ 的路由方案,因为它们在如何为您的路由定义 HTTP 动词方面更加严格。

【讨论】:

  • 谢谢,这正是我想知道的,确认。猜测是因为有什么改变还是因为我做错了什么,这有点痛苦。
猜你喜欢
  • 1970-01-01
  • 2019-09-28
  • 2017-02-28
  • 2020-05-06
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多