2011-12-29 98 views
1

我得到這個錯誤:爲什麼我在Rails中找不到路由匹配錯誤?

Started POST "/admin/reports/2/backfill" for 127.0.0.1 at Thu Dec 29 16:09:00 -0500 2011 

ActionController::RoutingError (No route matches "/admin/reports/2/backfill"): 

當我張貼這種形式:

<%=form_for @report, {:url => report_backfill_path(@report.id), :method => :post} do |f| %> 
    <%=label_tag(:days, "number of days to backfill")%> 
    <%=select_tag(:days, options_for_select((1..100).to_a.map{|i| [i,i]}))%> 
    <%=f.submit "backfill!" %> 
<% end %> 

但路線是指,從我耙路線命令檢查輸出:

report_backfill POST /admin/reports/:report_id/backfill(.:format) {:controller=>"reports", :action=>"backfill"} 

包含此表單的頁面呈現良好,只是在我發佈時發現錯誤。

任何想法?

+0

是發佈還是放?這是我最常見的錯誤... – DGM 2011-12-29 21:20:11

+0

這是一篇文章,我仔細檢查了幾次。 – 2011-12-29 21:20:29

+0

看起來像我必須使用form_tag,而不是form_for,因爲我不張貼到其中一個標準路由(也不包括標準對象字段)。沒有任何意義,表單呈現幾乎相同。 – 2011-12-29 21:27:40

回答

0

由於您使用form_for @report@report是現有模型,因此它會在隱藏字段中生成PUT幫助程序,這使得路徑引擎認爲它是PUT請求。實際上,爲了遵循導軌約定,既然您正在調用現有報告中的額外方法(即使副作用可能是創建東西),我也會將路由更改爲使用:put而不是:post,然後離開單獨的形式。

相關問題