2011-02-01 93 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也是如此。