我已经定义了一个用户资源,每个用户都有几个项目。现在我想为/user/:id/items(.:format)
添加路由,而不是将项目定义为嵌套资源,我使用成员路由:
resources :user do
member do
match "/items" => "items#index", :via => [:get]
end
end
问题是当我尝试为控制器编写rspec时,我不知道应该使用什么操作来访问items#index
。我试过了
describe ItemsController do
it "denies access to item index without login" do
sign_out @user
get "index", :user_id => @user.id, :format => :json
response.code.should == "401"
end
# ...
end
但是在执行rake spec:控制器后,它说
Failure/Error: get "index", :user_id => @user.id, :format => :json
ActionController::RoutingError:
No route matches {:user_id=>"1", :format=>"json", :controller=>"items"}
我正在使用Rails 3.1。如何使用rspec测试此成员路由?感谢。
答案 0 :(得分:2)
非常确定需要:
get :index, :id => @user.id, :format => :json
您需要传递:id
,而不是:user_id