gpt4 book ai didi

ruby-on-rails - 具有不同 HTTP 请求类型的两个路由如何共享相同的名称?

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:23 24 4
gpt4 key购买 nike

Rails 3.2 中,我使用这些路由声明:

get 'contact' => 'contact#new', :as => 'contact'
post 'contact' => 'contact#create', :as => 'contact'

它们导致(rake routes):

contact_en GET    /en/contact(.:format)    contact#new {:locale=>"en"}
contact_de GET /de/kontakt(.:format) contact#new {:locale=>"de"}
contact_en POST /en/contact(.:format) contact#create {:locale=>"en"}
contact_de POST /de/kontakt(.:format) contact#create {:locale=>"de"}

现在 Rails 4.0 提示这个配置:

Invalid route name, already in use: 'contact' You may have defined two routes with the same name using the :as option, or you may be overriding a route already defined by a resource with the same naming.

显然这些路由共享相同的名称,但由于请求类型不同,我希望它们像以前一样被接受。

如何让 Rails 4 像以前在 3.2 中一样生成路由?

最佳答案

在您的情况下,只需不指定 :as 选项就足够了,因为 Rails 会自动从路径中获取路由名称:

get 'contact' => 'contact#new'
post 'contact' => 'contact#create'

然而,如果你有一个更复杂的路径模式或者想要引用具有不同名称的路由,那么你应该专门将第二条路由设置为 :as => nil(或 as : nil 使用新的散列语法)。

因此,如果您想将路线命名为 person_path,您需要执行以下操作:

get 'contact' => 'contact#new', :as => 'person'
post 'contact' => 'contact#create', :as => nil

关于ruby-on-rails - 具有不同 HTTP 请求类型的两个路由如何共享相同的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com