我有一个模型“Job”,我正在添加一个新动作“预览”。为了支持这个新动作,我修改了routes.rb,如下所示:
resources :jobs do
member do
get 'preview'
end
end
然后在我的Job创建动作中,我得到了以下内容:
if @job.save
redirect_to preview_job_url
但是,当我保存表单时,我得到以下路由错误,而不是重定向到预览网址:
Routing Error
No route matches {:action=>"preview", :controller=>"jobs"}
无法弄清楚为什么会发生这种情况,因为URL工作正常(http:// localhost:3000 / jobs / id / preview),如果我运行rake路由,那么正确的路由似乎就在那里:
preview_jobs GET /jobs/preview(.:format) {:action=>"preview", :controller=>"jobs"}
有关可能发生的事情的任何想法?似乎所有的部分都已到位,但我是Rails的新手,所以我确定我错过了一些明显的东西。非常感谢。
答案 0 :(得分:3)
您将“预览”定义为成员操作。成员操作是指模型的实例。当您调用preview_job_url时,您需要传递特定的Job对象或Job的ID,以便可以创建URL。这应该是有道理的......如果你没有告诉框架你要为哪个Job建立一个URL,Rails如何构建一个引用特定模型的URL?
在你的控制器中试试这个:
if @job.save
redirect_to preview_job_url(@job)