Rails - Соединение флажков для изменения значений для таблицы соединений - PullRequest
0 голосов
/ 06 января 2011

У меня есть две модели событий и интересов, которые связаны миграцией таблицы соединений EventsInterests (event_id, Interest_id, id => false).

Я пытался создать что-то, чтобы вы могли связать набор категорий интересов с некоторыми событиями в моем приложении.

Я создал запись непосредственно в базе данных, и она отображается правильно, поэтому я почти уверен, что часть флажка верна; но я не могу отредактировать запись вообще. Если я добавлю еще один интерес через флажок, ничего не произойдет .. Я не получаю никаких ошибок, и журнал показывает, что он вызывает таблицу соединений, поэтому я предполагаю, что проблема связана с моим оператором обновления .....

Я думаю, что это что-то с attr_accessible part, но я не знаю, как добавить это для таблицы соединений .... я просто удаляю это?

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

1 Ответ

0 голосов
/ 06 января 2011

Если вы хотите обновить такие модели, вы должны использовать отношение has_many: through. Имеет и принадлежит моделям, имеет смысл только при создании / удалении отношения.

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

...