我正在使用简单表单,我有以下多选表单适用于新视图和编辑视图:
<%= 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 - 但改变那些没有做任何事情---
非常感谢任何指导。
答案 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 %>