Как использовать collection_check_boxes с массивом?

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

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

8
задан Justin Tanner 22 January 2016 в 19:57
поделиться