Rails 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
rake routes | grep seller_job_submitted
,我认为正确的结果出现了:
seller_job_submitted_job POST /jobs/:id/seller_job_submitted(.:format) {:action=>"seller_job_submitted", :controller=>"jobs"}
关于可能发生的事情的任何想法?
谢谢!
假设您已在模型和控制器中定义了seller_job_submitted方法。 替换你的代码
resources :jobs match "jobs/:id/seller_job_submitted" => "jobs#seller_job_submitted", :as => "seller_job_submitted"
然后在form_for标签中使用:url=>seller_job_submitted_path
这应该可以解决您的问题:您没有明确定义seller_job_submitted_job_path。
也许用put
而不是post
? 或者使用:post
作为提交表单中的方法。
您可以通过查看生成表单的REST方法来判断这是否是问题(在页面源中查找隐藏字段)。
简而言之,也许Rails在某种程度上期望在该URL上发布POST
,但它正在接收PUT
。
是的,这是Rails 3的回归错误。事实certificate你需要注意在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也是如此。