Сохранение тегов с помощью activ_as_taggable и activeadmin
Я использую ActiveAdmin и acts_as_taggable в приложении rails 3, и я могу получить список тегов, который будет отображаться в виде контрольного списка на страницах редактирования, и я могу добавлять теги с помощью консоли, а затем удалять их с помощью формы, но при этом возникают ошибки сохраняя форму, если я попытаюсь добавить теги
"Проверка не удалась: контекст не может быть пустым"
У меня есть только один контекст тегов (теги).
Код формы ActiveAdmin:
form :html => { :multipart => true } do |f|
f.inputs "Details" do
f.input :title
f.input :itinerary, :as => :select, :collection => Itinerary.all
f.input :description
f.input :address
f.input :contact_details
f.input :url
f.input :phone
f.input :nearest_tube
f.input :timetable
f.input :price
f.input :tags, :as => :check_boxes, :multiple => true, :collection => @tags
f.input :image, :as => :file
end
f.buttons
end
И в модели у меня есть
class Ticket < ActiveRecord::Base
has_and_belongs_to_many :itinerary
acts_as_taggable_on :tags
has_attached_file :image, :styles => { :medium => "210x140>", :thumb => "100x100>" }
end
Если я добавлю
attr_writer :tag_ids
для модели больше нет ошибок при сохранении, но все равно не сохраняются выбранные теги в списке.
Спасибо!
2 ответа
Это не использует флажки, но это работало хорошо для меня:
f.input :tag_list, :hint => 'Comma separated'
Вдохновленный ответом Натана, tag_list берет список имен тегов, поэтому вы можете использовать флажки, передавая коллекцию имен тегов:
f.input :tag_list, :as => :check_boxes,
:collection => ActsAsTaggableOn::Tag.all.map(&:name)