Так что я использую simple_form для построения моих форм, хотя это не является обязательным требованием.
Я пытаюсь использовать simple_forms collection_check_boxes и передать ему массив.
Я храню свои теги в configatron:
configatron.tags = [{:name => "wheels", :tagtype => "property"}, {:name => "roof", :tagtype => "property"}, {:name => "doors", :tagtype => "property"}]
Вот моя модель метки:
class Tag
include Mongoid::Document
embedded_in :taggable, polymorphic: true
field :name
field :tagtype
end
Вот что я пробовал:
<%= f.collection_check_boxes :tags, @tags, @tags.map{|tag| tag.name}, @tags.map{|tag| tag.name} %>
где @tags
установлен на configatron.tags
в контроллере
Я просто хочу заставить работать collection_check_boxes, а затем при before_save создать тег и внедрить его в текущий ресурс.
Я где-то читал, что вы можете сопоставить передаваемую коллекцию и выбрать содержимое элемента этой коллекции. Если я правильно понял, переопределить value_method?
Кажется, не могу вспомнить, как вы можете сделать это. Я также хочу передать текущие теги этого ресурса :collection => resource.tags
, чтобы эти теги проверялись при рендеринге.
Есть ли способ сделать это? Как бы я манипулировал form_builder, чтобы сделать это возможным, если да, то как? Стоит ли использовать другой подход?
Sidenote: эта функция должна работать и с магистралью, в некоторых местах магистраль будет использоваться для добавления тегов.