[rspec-users] route_for and nested resources

Matt Darby matt at matt-darby.com
Sun Jan 27 20:26:15 EST 2008


On Jan 27, 2008, at 8:05 PM, David Chelimsky wrote:

> 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 for the further explanation David! I could've sworn that I  
tried this, but sure enough, it works like a charm.

Thanks!

Matt Darby, M.S.
IT Manager / Lead Web Developer

Dynamix Engineering Ltd.
1108 City Park Ave.
Columbus, OH 43206
Cell: (614) 403-5289
www.dynamix-ltd.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-users/attachments/20080127/2f98f42d/attachment-0001.html 


More information about the rspec-users mailing list