[rspec-users] route_for and nested resources

David Chelimsky dchelimsky at gmail.com
Sun Jan 27 20:05:58 EST 2008


On Nov 21, 2007 3:10 PM, Chris Olsen <lists at ruby-forum.com> wrote:
> I can't figure out how to make the updates to allow for the route_form
> method to return a url that matches the expected.
>
> Here is a sample
> route_for(:controller => :task, :action => :new).should == "/task/new"
>
> If a task has to be created for a user, how exactly do I do this.  The
> following doesn't work:
> route_for(:controller => :task, :action => :new, :user_id => 1).should
> == "/users/1/task/new" (fails)
> route_for(:controller => :task, :action => :new, :user_id => 1).should
> == "/task/new?user_id=1" (passes)
>
> Or do you just use:
> new_user_task(1,1).should == "/users/1/task/new"
>
> I haven't been able to find that much documentation on the route_for
> method that lists any ways of creating the nested route url.

It uses ActionController::Routing::Routes.generate, which is equally
un-documented :(

You've got a singular task controller (instead of tasks), so I'm not
sure how that's affecting things. I can tell you that if you do this:

route_for(:controller => 'tasks', :action => 'new', :user_id =>
'2').should == '/users/2/tasks/new'

It will pass when your routes.rb has this:

map.resources :users do |users|
  users.resources :tasks
end

Give that a whirl.

Cheers,
David

>
> Thanks.
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list