当前位置: 动力学知识库 > 问答 > 编程问答 >

checkbox - Rails - Connecting checkboxes to change values for a join table

问题描述:

I have two models Events and Interests which are connected by a join table migration EventsInterests (event_id, interest_id, id=>false).

I was trying to create something where you could connect a set of interest categories to some events within my app.

I created a record in directly in the database and its showing up correctly, so I'm pretty sure the checkbox part is correct; but I cant edit the the record at all. If I add another interest through the checkbox, nothing happens..Im not getting any errors and the log shows it calling the join table, so I'm guessing the issue is with my update statement.....

Im thinking its something with attr_accessible part but I dont know how to add that for a join table....do i just delete it?

events.rb

 has_and_belongs_to_many :interests

attr_accessible :name, :category

interests.rb

 has_and_belongs_to_many :events

In my edit form where I would like to add the records to the join table it looks like this.

<%= form_for @event do |f| %>

<%= f.error_messages %>

<p>

<%= f.label :title %><br />

<%= f.text_field :title %>

</p>

<% for interest in @interests %>

<div>

<%= check_box_tag "event[interest_ids][]", interest.id, @event.interests.include?(interest) %>

<%= interest.name %>

</div>

<% end %>

<p><%= f.submit %></p>

and the edit/update part in the controller looks like

 def update

@event = Event.find(params[:id])

params[:event][:interest_ids] ||= []

if @event.update_attributes(params[:event])

flash[:notice] = "Successfully updated event."

redirect_to @event

else

render :action => 'edit'

end

end

网友答案:

If you want to update such models, you should use a has_many :through relation. Has and belongs to models make only sense when only creating / deleting a relation..

See http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

分享给朋友:
您可能感兴趣的文章:
随机阅读: