【发布时间】:2011-01-05 23:24:12
【问题描述】:
我有两个模型 Events 和 Interests,它们通过连接表迁移 EventsInterests (event_id, interest_id, id=>false) 连接。
我试图创建一些东西,您可以将一组兴趣类别与我的应用程序中的某些事件联系起来。
我直接在数据库中创建了一条记录,并且它显示正确,所以我很确定复选框部分是正确的;但我根本无法编辑记录。如果我通过复选框添加另一个兴趣,则不会发生任何事情..我没有收到任何错误,并且日志显示它调用连接表,所以我猜问题出在我的更新语句......
我认为它与 attr_accessible 部分有关,但我不知道如何为连接表添加它....我只是删除它吗?
events.rb
has_and_belongs_to_many :interests
attr_accessible :name, :category
兴趣.rb
has_and_belongs_to_many :events
在我想将记录添加到连接表的编辑表单中,它看起来像这样。
<%= 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>
控制器中的编辑/更新部分看起来像
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
【问题讨论】:
标签: ruby-on-rails checkbox has-and-belongs-to-many