Right now my Posts model has_many :tags, :through => :tag_joins
When I add tags, while creating a post, the tag_join records are automatically created.
Now here is what I’m trying to accomplish: While viewing the show view of posts I want to be able to add a new tag.
I tried @post.tag = Tag.new didn’t work (returns a “nomethoderror” for tag=)
So I’m trying to figure out how I can add tags and still create those joins automatically.
I am using accepts_nested_attributes etc.
UPDATE: I originally asked how to do this on the index view, but I have changed it to the show view – because I expect it to be a little easier.
You’re not too far off with
@posts.tags = Tag.new. Here’s a couple of ways to do it;I see a couple of approaches to this problem.. One is to pass through the id of the post with the tag form using either a hidden_field or by using nested routes for tags. Then you can use that in the controller to retrieve the post and use a syntax similar to above.
While that would work, the problem is that it’s a bit ugly.. It means your tag controller would be dealing with finding a post (which isn’t necessarily wrong, but it shouldn’t need to worry about posts. Unless tags can only be associated with posts, that is).
The more graceful way of dealing with it would be to make the form you’re showing be a form for the post instance, not a tag. Then you could use nested attributes to create the tag as part of a post.