2016-07-15 40 views
0

我一邊跑我的應用面臨着這樣的錯誤:沒有路由匹配[PUT]用Rails 4.2.6錯誤

No route matches [PUT] "/accounts/1/payment"

這是我的形式語法;

<%= semantic_form_for(@account, :url => payment_path, :html => { :method => :put }) do |f| %> 
...... 
<% end %> 

的routes.rb:

get "/accounts/:id/payment" => "accounts#payment", :as => "payment" 

控制器的方法:

def billing 
    @account = Account.find(params[:id]) 
    if request.put? 
    // some code here 
    end 
end 
+0

你在'routes.rb'加適量路線 – uzaif

+0

您必須將您的操作重命名爲「付款」或重命名您的路線。看下面的答案。 –

回答

1

更換

get "/accounts/:id/payment" => "accounts#payment", :as => "payment" 

match "/accounts/:id/payment", to: "accounts#payment", :as => "payment", via: [:get, :put] 

,讓我知道,如果這個工程。

編輯

如果你的控制器動作是billing,那麼你可能需要做

match "/accounts/:id/payment", to: "accounts#billing", :as => "payment", via: [:get, :put] 
0

表單正在試圖找到一個途徑,方法匹配,同時把你的路線有一個get方法。把 使用的路線,而不是讓

put "/accounts/:id/payment" => "accounts#payment", :as => "payment" 
+0

現在我得到這個錯誤:'沒有路線匹配[GET]「/ accounts/1/payment」' – venkat

+1

哦,在這種情況下,您可能需要兩條路線。 – Shani

0

在你的表格你告訴這個表格將被視爲PUT請求,但你的路由說,這是GET請求。您應該在兩個routes.rb和您的表單定義中使用相同的請求類型。

0

試試這個

put "/accounts/:id/payment" => "accounts#billing", :as => "payment" 
相關問題