Rails 4.0.x如何将contact_us gem的root动作路由到指定的动作?
我使用contact_us宝石版本0.5.4Rails 4.0.x如何将contact_us gem的root动作路由到指定的动作?
我下面的代码在我的routes.rb文件
resources :contacts, controller: 'contact_us', only: [:new, :create] do
root :to => 'contact_us#new'
end
在我的理解上面的路线
contacts
将只支持
:new
和
:create
行动
,并与指定控制器controller: 'contact_us'
还将其与根/
会重定向到#new
动作,但是当我在浏览器中点击http://localhost:3000/contact-us它说
未知的动作
行动“索引”不能为ContactUsController
发现我已经升级,从3.2.19轨道版本4.0.13和红宝石以2.0.0p481
老代码工作正常使用Rails 3.2.19和1.8.7红宝石
resources :contacts,
:controller => 'contact_us',
:only => [:new, :create]
match 'contact_us' => 'contact_us#new'
如果我只用get
在上面的代码抛出这个错误更改match
/home/vagrant/.rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.0.13/lib/action_dispatch/routing/route_set.rb:430:in `add_route“:无效路由名称,已在使用中:“CONTACT_US” (引发ArgumentError)
你可能已经使用
:as
选项定义的两条路线具有相同名称 ,否则你可能会改写已经 由资源具有相同定义的路由命名。对于后者,可以 限制与resources
创建的路线如下解释:
在路由添加:as
做的工作
resources :contacts,
:controller => 'contact_us',
:only => [:new, :create]
get 'contact_us' => 'contact_us#new', as: :contact_us2
如聊天CONTACT_US模块鉴定Albinroute file它已经拥有相同的路线,但用不同的别名
get "contact-us" => "contact_us/contacts#new", as: :contact_us #line#11
我只是添加了不同路径和不同别名的相同路由,
你可以做同样的方式像你一样在Rails 3.2你只需要到match
交换到get
。不再允许匹配任何动词。
resources :contacts,
:controller => 'contact_us',
:only => [:new, :create]
get 'contact_us' => 'contact_us#new'
编辑
我们在聊天解决了这个。事实证明,这是与宝石的碰撞。
试试这个
resources :contacts, controllers: 'contact_us', :only => [:new, :create]
root :to => 'contact_us#new'
# or without root
match 'contact_us' => 'contact_us#new', via: [:get]
请检查更新问题 –
@ riksof-zeeshan:您是否尝试过以上代码? –
是的,我做了'match'contact_us'=>'contact_us#new',通过:[:get]'并且它抛出这个错误无效的路由名称,已经在使用:'contact_us' –
是的,我做到了,但它抛出了另一个错误,请检查问题更新 –
这是如此奇怪。我开始了一个新的小测试项目。它工作顺利... – Albin
是你的整个路线文件? – Albin