четверг, 2 февраля 2012 г.

Multiselect в Rails.

Чтобы создать мультиселек в рельсах, можно использовать обычный select с параметром multiselect
= form_for @thing do |f|
  = f.select :user_tokens, 
      options_from_collection_for_select(User.all, :id, :name, @thing.users.collect {|u| u.id}),
      { :include_blank => true}, 
      {:class => "select_multiple", :multiple => true}

Вторым параметром для хэлпера select является коллекция, которая будет преобразована в <option val="val">Name</option>, третьим - опции (в приведенном примере задействована опция включения пустого <option> в начале), четвертым - параметры html.

Для получения коллекции используется функция options_from_collection_for_select, ее формат:

options_from_collection_for_select(collection, value_method, text_method, selected = nil)
collection - коллекция
value_method - метод коллекции, который будет использоваться для получения val
text_method - метод коллекции, который будет использоваться для получения Text 
<option val="value_method>text_method</option>
selected - необязательный параметр, является массивом выбранных записей. Если value совпадает с одинм из значений массива select, то к соответсвующему <option> присваивается атрибут selected
<option val="val" selected>name</option>

Комментариев нет:

Отправить комментарий