Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Link_to with nested resources

I am a totally newbie in Rails.

I have created a web application, I can access through /posts/123/comments/ or /posts/123/comments/new, but i don't know how to use link_to in the index view to show a concrete comment, when i try to link it, appears "no route" or "undefined symbol".

I have a nested have_many relation between posts and comments defined in the models and in the routes.rb and post_comments GET /posts/:post_id/sensors(.:format) comments#index appears when I execute rake routes.

How I can do it?

like image 501
fuco Avatar asked Apr 29 '13 11:04

fuco


3 Answers

After trying all of the answers it didnt completely work, but i found a way to resolve it. In a first moment, I used

post_comments_url(@post,comment)

where comment is the item inside a @post.each.

It generates a "strange" route, using . instead / like "post/34/comments.2", i fixed it using the singular form:

post_comment_url(@post,comment)

Thanks for helping!

like image 91
fuco Avatar answered Nov 17 '22 03:11

fuco


If you have defined nested resources (and of course your models Comment and Post are associated)

resources :posts do
 resources :comments
end

You can link a comment as following

<!-- /posts/:post_id/comments/:id -->
<%= link_to 'Show', [@comment.post, @comment] %>

I've written a full example of nested resources in a past blog post

like image 24
toch Avatar answered Nov 17 '22 02:11

toch


Get method name from the first column of

   rake routes

And pass the ids accordingly. And of course suffix the method name with _path ir _url To know more, visit the Rails guide

like image 1
Shairon Toledo Avatar answered Nov 17 '22 03:11

Shairon Toledo