ruby-on-rails – 带有Rails的RSpec 3.1除路由存在外,没有路由匹配错误

有没有人知道为什么当我运行我的规格它说这条路线不存在时,它显然是什么时候?

这是控制器中的相关代码:

class JobsController < ApplicationController
  before_filter :find_job, :only => [:show, :edit]
  respond_to :html, :json
  def show
    respond_with @job
  end
  def find_job
    @job = Job.find(params[:id])
  end
end

并在routes.rb中:

resources :jobs

并在规格中:

  def valid_attributes
    {}
  end

  describe "POST create" do
    context "with valid params" do
      it "redirects to the jobs path" do
        post :create, :job => valid_attributes
        response.should redirect_to job_path
      end
    end
  end

错误:

  1) JobsController when logged in as administrator POST create with valid params redirects to the jobs path
     Failure/Error: response.should redirect_to job_path
     ActionController::RoutingError:
       No route matches {:action=>"show", :controller=>"jobs"}

当我运行rake路线时,我得到:

    jobs GET    /jobs(.:format)                       {:action=>"index", :controller=>"jobs"}
         POST   /jobs(.:format)                       {:action=>"create", :controller=>"jobs"}
 new_job GET    /jobs/new(.:format)                   {:action=>"new", :controller=>"jobs"}
edit_job GET    /jobs/:id/edit(.:format)              {:action=>"edit", :controller=>"jobs"}
     job GET    /jobs/:id(.:format)                   {:action=>"show", :controller=>"jobs"}
         PUT    /jobs/:id(.:format)                   {:action=>"update", :controller=>"jobs"}
         DELETE /jobs/:id(.:format)                   {:action=>"destroy", :controller=>"jobs"}
最佳答案
job_path不是没有:id参数的有效路由.这应该工作:

job = assigns(:job)
response.should redirect_to job_path(job)

转载注明原文:ruby-on-rails – 带有Rails的RSpec 3.1除路由存在外,没有路由匹配错误 - 代码日志