I’m creating a simple inventory app, there is a view that lists ‘items’. It has tables with these rows:
<tr>
<td><%= item.title %></td>
<td><%= item.desc %></td>
<td><%= item.value %></td>
<td><%= item.room.name %></td>
<td><%= item.user.username %></td>
<td>
<%= link_to 'View', item %>
<%= link_to 'Edit', edit_item_path(item) %>
<%= link_to 'Delete', item, method: :delete, data: { confirm: 'Are you sure?' } %>
<%= link_to 'Add Comment', !?????! %>
</td>
/tr>
I have a linked model for ‘comments’ set up but don’t know how to pass the 'item_id' to it when creating a new one.
The URL helpers actually accept the object to make a route for an association. Meaning, assuming you have a nested route for comments within items,
you can
link_tothenew_item_comments_path(item).The method
new_item_comments_path(item)makes a string URL based on thenew_item_commentsroute, which you feed tolink_toto make an HTML<a>tag.To be clearer, in your view you would have:
In this case, the
itemyou are passing is the reference to your current item, which allows the URL helper to make a URL for it from the route.The Rails guide for routing should be a useful read for you.
Now that’s assuming your Comment controller assigns the right stuff at the right place. You seemed to have figured that out, but I’ll explain for the sake of clarity (and future visitors)