Rails:多选图像选择器

时间:2013-12-05 05:57:30

标签: jquery ruby-on-rails ruby ruby-on-rails-3 forms

我正在使用简单表单,我有以下多选表单适用于新视图和编辑视图:

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

我可以进行多项选择并更新数据库 - 当我进入编辑时代 - 我看到数据库中的选择并且能够更改和更新数据库---

我现在正在尝试使用http://rvera.github.io/image-picker/ - 我无法使用上述代码,因为我理解它(Rails Simple Form custom association select field)简单表单集合不支持其他属性

经过多次尝试和努力 - 我现在有了这个新视图的工作 - 感谢这篇文章:http://www.redguava.com.au/2011/03/rails-3-select-list-items-with-custom-attributes/

新视图

<%= 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

我的问题是,当我进入编辑视图时,多选不会显示数据库中的项目 - 我认为它可能是一些简单的东西,我忽略了,有一点是它是selected = nil - 但改变那些没有做任何事情---

非常感谢任何指导。

1 个答案:

答案 0 :(得分: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 %>