Rails路由问题 - “没有路由匹配......”

时间:2011-03-06 23:58:18

标签: ruby-on-rails routes custom-routes

我有一个模型“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的新手,所以我确定我错过了一些明显的东西。非常感谢。

1 个答案:

答案 0 :(得分:3)

您将“预览”定义为成员操作。成员操作是指模型的实例。当您调用preview_job_url时,您需要传递特定的Job对象或Job的ID,以便可以创建URL。这应该是有道理的......如果你没有告诉框架你要为哪个Job建立一个URL,Rails如何构建一个引用特定模型的URL?

在你的控制器中试试这个:

if @job.save
  redirect_to preview_job_url(@job)