2016-08-31 65 views
0

路線:軌道4:無路由匹配[PATCH] 「/」

display_panel GET /display/panel(.:format)       display#panel 

控制器:

class DisplayController < ApplicationController 
    def panel 
    @approval = Approval.where(user_id: current_user.id) 
    end 
end 

查看:

<%= form_for approval,url: root_path, method: :patch do |f| %> 
    <%= f.check_box :pass%> 
    <%= f.submit %> 
<% end %> 

我覺得我做的補丁在一個get行動,這會導致錯誤,所以我希望使用mathod: :patch來糾正它,但它仍然顯示我相同的錯誤。

我嘗試了許多解決方案,與其他類似的問題,還是不行。

回答

0

更新您的形式是這樣的:

<%= form_for @approval, url: [update_path] , method: :patch do |f| %> 
    <%= f.check_box :pass%> 
    <%= f.submit %> 
<% end %> 

[更新路徑]應該是這樣的approval_path,不root_path。運行rake routes | grep approval來驗證,如果你有審批設置patch路線。

+0

我嘗試這樣做,但問題是,如果我定義route.rb一個更新路徑並限定在審批控制器更新方法,我無法通過使用批准找到批准= Approval.find(PARAMS [:ID]) ,因爲我正在做索引頁面的更新事情。 –

+0

現在這混亂的,如果你沒有正確的形式端點或形式網址無法提交表單,就這麼簡單。在索引頁中進行更新並不意味着使用索引url作爲端點。無論如何,默認的索引路由映射到HTTP GET。你應該做的是在成功更新後重定向到索引頁面。 – kasperite

+0

嗨,你是正確的,我認爲最大的問題是,我沒樣的方式來傳遞ID更新動作。我嘗試了幾種方法,現在可以工作了,謝謝你的幫助。 –