使用 rails 恢复 select2 4.0.3 的已保存/初始值
restore saved / initial value for select2 4.0.3 with rails
我正在使用 select2 版本 4.0.3
下面是我的 html 使用 select 标签 rails 助手
<%= f.select(:hotel_id, [], {}, :class => 'select2-autocomplete' ) %>
下面是我的 coffeescript(正在创建新的)
$('.select2-autocomplete').select2
multiple: false
width: "98%"
placeholder: "Type Hotel name"
minimumInputLength: 3
ajax:
url: '/hotels/search_name.json'
dataType: 'json'
delay: 250
data: (params) ->
q: params.term
processResults: (data, params) ->
results: $.map data, (item)->
id: item.id
text: item.name
之前它使用 initSelection 为 select2 版本 3.5.3 完成,但随后版本 4.0.3 发生了变化,我确实阅读了 documentation 但仍然没有好的结果,
我的问题是当用户编辑页面时,我需要恢复以前的 select 值并显示它。
最后在如何使用 select2 版本 4 恢复值的过程中反复试验之后,它可能不干净但它有效
<% if f.object.persisted? && f.object.hotel_id %>
<% if f.object.hotel_id > 0 %>
<% value = f.object.hotel_id %>
<% text = Hotel.find(value).name %>
<% end %>
<% end %>
<%= f.select(:hotel_id, options_for_select([["#{text}", value.to_s]]), {selected: value}, :class => 'select2-autocomplete' ) %>
关键答案是底线,
- 使用 f.select、
- 使用 option_for_select 生成选项
- 确保选项使用的是字符串 value.to_s
- 在选项下使用 { selected: value}
希望它可以帮助其他 rails 使用 select2 和 ajax 搜索的用户
我正在使用 select2 版本 4.0.3
下面是我的 html 使用 select 标签 rails 助手
<%= f.select(:hotel_id, [], {}, :class => 'select2-autocomplete' ) %>
下面是我的 coffeescript(正在创建新的)
$('.select2-autocomplete').select2
multiple: false
width: "98%"
placeholder: "Type Hotel name"
minimumInputLength: 3
ajax:
url: '/hotels/search_name.json'
dataType: 'json'
delay: 250
data: (params) ->
q: params.term
processResults: (data, params) ->
results: $.map data, (item)->
id: item.id
text: item.name
之前它使用 initSelection 为 select2 版本 3.5.3 完成,但随后版本 4.0.3 发生了变化,我确实阅读了 documentation 但仍然没有好的结果,
我的问题是当用户编辑页面时,我需要恢复以前的 select 值并显示它。
最后在如何使用 select2 版本 4 恢复值的过程中反复试验之后,它可能不干净但它有效
<% if f.object.persisted? && f.object.hotel_id %>
<% if f.object.hotel_id > 0 %>
<% value = f.object.hotel_id %>
<% text = Hotel.find(value).name %>
<% end %>
<% end %>
<%= f.select(:hotel_id, options_for_select([["#{text}", value.to_s]]), {selected: value}, :class => 'select2-autocomplete' ) %>
关键答案是底线,
- 使用 f.select、
- 使用 option_for_select 生成选项
- 确保选项使用的是字符串 value.to_s
- 在选项下使用 { selected: value}
希望它可以帮助其他 rails 使用 select2 和 ajax 搜索的用户