2011-01-05 25 views
0

我有兩個模型事件和興趣通過連接表遷移EventsInterests(event_id,interest_id,id => false)連接。Rails - 連接複選框以更改連接表的值

我試圖創建一些東西,可以將一組興趣類別連接到我的應用中的某些事件。

我在數據庫中直接創建了一條記錄,並且它正確顯示,所以我很確定複選框部分是正確的;但我根本不能編輯記錄。如果我通過複選框添加另一個興趣,沒有任何反應..沒有得到任何錯誤和日誌顯示它調用連接表,所以我猜這個問題是與我的更新聲明.....

Im思考它與attr_accessible部分的東西,但我不知道如何添加一個連接表....我只是刪除它?

events.rb

has_and_belongs_to_many :interests 
    attr_accessible :name, :category 

interests.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 

回答