Как я могу использовать collection_check_boxes с массивом? - PullRequest
7 голосов
/ 15 декабря 2011

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

Ответы [ 2 ]

6 голосов
/ 22 января 2016

Как использовать collection_check_boxes с Array:

FRUITS = [[1, 'Abiu'], [2, 'Açaí'], [3, 'Assai'], [4, 'Acreola']]

<%= f.collection_check_boxes :fruits, FRUITS, :first, :last %>
3 голосов
/ 05 января 2012

После проверки простой формы документов , я думаю, вам нужно передать значения_метода и метки_метода в виде символов в collection_check_boxes

Например:

<%= f.collection_check_boxes :tags, @tags, :name, :name %>

Это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...