Rails: Multi-Select Image Picker

0

Я использую Simple Forms, и у меня есть следующая многозадачная форма, работающая правильно как для новых, так и для редактирования:

<%= f.association :attitudes, as: :select %>

Я могу сделать множественный выбор и обновить БД - когда я перейду к возрасту редактирования - я вижу выбор, которые находятся в БД и имеют возможность изменять и обновлять БД ---

Я теперь пытаюсь использовать http://rvera.github.io/image-picker/ - я не мог использовать вышеуказанный код, потому что, насколько я понимаю (поле выбора настраиваемой ассоциации Rails Simple Form), Simple Form Collection не поддерживает дополнительные атрибуты

После долгих проб и усилий - теперь у меня это работает для представления NEW - благодаря этому сообщению: http://www.redguava.com.au/2011/03/rails-3-select-list-items-with -custom-attributes/:

NEW VIEW

<%= f.association :attitudes do %>
<%= select_tag("task[attitude_ids][]", options_from_collection_for_select_with_attributes(Attitude.all, 'id', 'name', 'data-img-src', 'img_url',  @task.attitudes.collect), {:multiple=>true, :size=>5, :class=>"image-picker show-html"}) %>
<% end %>

APPLICATION_HELPER.RB

def options_from_collection_for_select_with_attributes(collection, value_method, text_method, attr_name, attr_field, selected = nil)
    options = collection.map do |element|
    [element.send(text_method), element.send(value_method), attr_name => element.send(attr_field)]
end

selected, disabled = extract_selected_and_disabled(selected)
select_deselect = {}
select_deselect[:selected] = extract_values_from_collection(collection, value_method, selected)
select_deselect[:disabled] = extract_values_from_collection(collection, value_method, disabled)

options_for_select(options, select_deselect)

end

Моя проблема заключается в том, что когда я перехожу к просмотру редактирования, мультивыбор не отображает элементы, находящиеся в БД, - я думаю, что это может быть что-то простое, что я пропускаю, и в какой-то момент он был выбран = nil - но изменение, которое ничего не делало ---

Любое руководство будет высоко оценено.

Теги:
forms
ruby-on-rails-3

1 ответ

0

Для всех, у кого может быть подобная проблема (и, надеюсь, это сэкономит вам часы исследований и проб/ошибок) - мне удалось преодолеть проблему с помощью следующего кода:

<%= f.input :attitude do %>
<%= f.select :attitude_ids, Attitude.all.map { |f| [f.name, f.id, { 'data-img-src' => f.img_url} ] }, { :prompt => "Please select"}, { :multiple => true, :size => 5, :class=>"image-picker show-html" } %>
<% end %>
  • 0
    Вы загрузили исходный код или использовали самоцвет для image picker rails ? Я использовал драгоценный камень и сделал свой выбор именно так, как отображается ваш выбор (за исключением блока, потому что я не использую simple_form). Но изображения не отображаются, и я получаю окно выбора по умолчанию для рельсов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню