ruby-on-rails – Rspec:控制器规范2级嵌套资源

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rspec:控制器规范2级嵌套资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的路线
namespace :magazine do
   resources :pages do
     resources :articles do
       resources :comments
     end
   end
  end

在撰写控制器规范时,请注意:

describe "GET 'index'" do
    before(:each) do
     @user = FactoryGirl.create(:user)
     @page = FactoryGirl.build(:page)
     @page.creator = @user
     @page.save
     @article = FactoryGirl.create(:article)
     @comment_attributes = FactoryGirl.attributes_for(:comment,:article_id => @article )
   end
it "populates an array of materials" do
  get :index,??
  #response.should be_success
  assigns(:comments)
end

it "renders the :index view" do
  get :index,?? 
  response.should render_template("index")
end

end

任何想法如何给页面文章参考获取:index?
如果我给:get:index,:article_id => @ article.id
我得到的错误如下:

Failure/Error: get :index,:article_id => @article.id
 ActionController::RoutingError:
   No route matches {:article_id =>"3",:controller=>"magazine/comments"}

解决方法

您的路线至少需要两个ID:评论的父文章文章的父页面.
namespace :magazine do
  resources :pages do
    resources :articles do
      resources :comments
    end
  end
end

# => /magazine/pages/:page_id/articles/:article_id/comments

必须为此路由提供所有父ID:

it "renders the :index view" do
  get :index,{:page_id => @page.id,:article_id => @article.id}
  response.should render_template("index")
end

猜你在找的Ruby相关文章