2014-06-20 45 views
2

錯誤是說實話,我使用了路由名稱'contact'兩次,但一個匹配是get請求,另一個是post。我一直在下面的Rails中建立聯繫表下面的教程:http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/,筆者建議添加以下到我的路線文件:Rails 4:無效的路由名稱,已在使用(ArgumentError)

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

但是這給了我以下錯誤:

Invalid route name, already in use: 'contact' (ArgumentError) 

這是我自己的routes.rb文件:

Fls::Application.routes.draw do 
    root 'welcome#index' 
    match 'contact' => 'contact#new', :via => :get 
    match 'contact' => 'contact#create', :as => 'contact', :via => :post 
end 
+0

什麼是你正在使用的軌道版本? – Zakwan

回答

1

上面做以下代替:

resource :contact, only: [:new, :create] 

OR

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

但它是如何工作的當你'資源:照片'例如 - 這樣做後,我可以使用helper'photos_path'方法:post和'photos_path'方法'get',它分別照片#create和photos#index 。即看起來像具有相同名稱的2個不同端點。 – ryan2johnson9

+1

回答我自己的問題 - [本博客狀態](http://itm-labs.de/blog/rails-4-upgrade-gotcha-1/)_要使其作爲命名路線可用,您必須設置作爲第一條路線的選項。第二個會自動以相同的名稱提供。但根據這個答案,您也可以將它放在第二條路線上,而不是第一條路線 - 我還沒有測試過。 – ryan2johnson9

+0

我仍然想知道這是如何可能的。只是把它一個或另一個不起作用。 – gregblass

相關問題