2010-08-15 1 views
0

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

Categories:<br /> 
<% @categories.each do |c| %> 
    &nbsp;<%= check_box_tag :category_ids, c.id, @publication.categories.include?(c), :name => 'publication[category_ids]' -%> 
    <%= "#{c.name}"%><br /> 
<% end -%> 

Код модели:

class Publication < ActiveRecord::Base 
    has_many :listings 
    has_many :categories, :through => :listings, :order => "listings.position" 

Это показывает нормально - при обновлении, однако, она сохраняет только последнюю категорию, которая проверяется (если Я проверяю несколько категорий, сохраняется только один), если я не проверяю ни одну ячейку, это не изменяет отображаемые.

ответ

0

Моя проблема - мне пришлось реализовать set_ids setter в публикации. Я внедрил его так:

after_save :update_categories 
    attr_accessor :category_ids 

    def update_categories 
    unless category_ids.nil? 
     self.listings.each do |listing| 
     listing.destroy unless category_ids.include?(listing.category_id.to_s) 
     category_ids.delete(listing.category_id.to_s) 
     end 
     category_ids.each do |cid| 
     self.listings.create(:category_id => cid) unless cid.blank? 
     end 
     reload 
     self.category_ids = nil 
    end 
    end 

 Смежные вопросы

  • Нет связанных вопросов^_^