2011-02-01 97 views
3

我在軌道3以下路線:路由錯誤使用Rails 3成員

resources :jobs do 
    member do 
     post :seller_job_submitted 
    end 
    end 

而下面的表格

=form_for job, :url=>seller_job_submitted_job_path(job), :remote=>true do |f| 

我知道這是不是很寧靜,但它是一種上了句號現在差距。在任何情況下,提交表單

Started POST "/jobs/74/seller_job_submitted" for 127.0.0.1  
ActionController::RoutingError (No route matches "/jobs/74/seller_job_submitted"): 

時,我不斷收到這個錯誤,但是當我運行rake routes | grep seller_job_submitted,我認爲正確的結果出來了:

seller_job_submitted_job POST /jobs/:id/seller_job_submitted(.:format)     {:action=>"seller_job_submitted", :controller=>"jobs"} 

什麼可能進行的任何想法?

謝謝!

+1

你有編輯routes文件後重新啓動您的服務器? – 2011-02-01 21:26:59

回答

0

假設您已在模型和控制器中定義了方法seller_job_submitted。 中的form_for標記使用:url=>seller_job_submitted_path

resources :jobs  
match "jobs/:id/seller_job_submitted" => "jobs#seller_job_submitted", :as => "seller_job_submitted" 

替換您的代碼然後這應該可以解決你的問題:你沒有明確定義seller_job_submitted_job_path。

0

也許使用put而不是post?或者在提交表單中使用:post作爲方法。

你可以說,如果這是看什麼REST方法對於生成的表單中的問題(會在頁面的源代碼隱藏字段)。

所以簡而言之,也許Rails不知道該網址上的POST,但它收到PUT

0

是的,這是一個迴歸的錯誤使用Rails 3 事實證明,你必須要小心在你的routes.rb使用POST。

resources :jobs do 
    member do 
    post :seller_job_submitted # will not work 
    put :seller_job_submitted # will just work 
end 

即使FORM方法表示POST也是如此。