Rails 4 - Одиночный атрибут для приема массива значений

Мне нужно иметь атрибут в моей форме (: supported_media_types), который принимает массив значений.

Например, я хочу, чтобы пользователь мог нажимать на JPG и PNG, если это необходимо.

Я установил drop2 с несколькими: true

Есть ли простой способ достичь этого или мне нужно создать таблицу соединений?

<%= f.select :supported_ad_types, supported_types_of_media, {include_blank: true}, {class: 'filter_select', name: 's2id_location_supported_ad_types[]', style:'width:100%;', placeholder: 'Supported File Types', required: true, multiple: true} %>
2 ответа

Создайте сериализованный атрибут следующим образом:

1 - добавьте столбец в вашу миграцию, как правило, в виде текста:

rails g model Image types:text
rake db:migrate

2 - В вашем классе:

class Image < ActiveRecord::Base
 serialize :types, Array
end

Теперь вы можете делать такие вещи, как:

i = Image.new
i.types << "png"
i.types << "jpg"
i.save
=> #


используйте select_tag 'supported_ad_types[]'... для получения параметров массива.

В вашей модели используйте serializer :supported_ad_types, array для сохранения параметров массива.

licensed under cc by-sa 3.0 with attribution.