This should be easy to solve; I’m trying to get an Rspec routing_spec
working with a singular nested resource;
map.resources :users do |user|
user.resource :profile
end
All the tests in the profile_routing_spec seem to be failing because
they can’t match the routes, for example;
The spec
describe ProfileController do
describe “route generation” do
it "should map { :controller => 'profile', :action => 'show',
:user_id => ‘1’ } to /user/1/profile" do
route_for(:controller => “profile”, :action => “show”, :user_id =>
1).should == “/user/1/profile”
end
The failed spec message
should map { :controller => ‘profile’, :action => ‘show’, :user_id =>
‘1’ } to /user/1/profile
expected: “/user/1/profile”,
got: “/profile/show?user_id=1” (using ==)
The spec seems to be turning the user_id (in the params) in to a query
on the profile resource, rather than using it to find the parent user
resource.
This is how ‘rake routes’ looks:
POST /users/:user_id/profile
{:action=>“create”, :controller=>“profiles”}
POST /users/:user_id/profile.:format
{:action=>“create”, :controller=>“profiles”}
new_user_profile GET /users/:user_id/profile/new
{:action=>“new”, :controller=>“profiles”}
formatted_new_user_profile GET /users/:user_id/profile/new.:format
{:action=>“new”, :controller=>“profiles”}
edit_user_profile GET /users/:user_id/profile/edit
{:action=>“edit”, :controller=>“profiles”}
formatted_edit_user_profile GET /users/:user_id/profile/edit.:format
{:action=>“edit”, :controller=>“profiles”}
user_profile GET /users/:user_id/profile
{:action=>“show”, :controller=>“profiles”}
formatted_user_profile GET /users/:user_id/profile.:format
{:action=>“show”, :controller=>“profiles”}
PUT /users/:user_id/profile
{:action=>“update”, :controller=>“profiles”}
PUT /users/:user_id/profile.:format
{:action=>“update”, :controller=>“profiles”}
DELETE /users/:user_id/profile
{:action=>“destroy”, :controller=>“profiles”}
DELETE /users/:user_id/profile.:format
{:action=>“destroy”, :controller=>“profiles”}
Any ideas?