Итак, я использую 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, чтобы это стало возможным, и если да, то как? Следует ли мне использовать другой подход?
Примечание: эта функция должна работать и с магистралью, в некоторых местах магистраль будет использоваться для добавления тегов.