我一直致力于实现act-as-taggable-on和select2来获得类似于stackoverflow的标记系统。我终于完成了所有工作,但我可以弄清楚两个问题。
下面是两个适用的代码块:
$(document).on 'ready page:load', ->
$("select#cuisine-select").select2({
tags: true,
tokenSeparators: [',', ' ']
placeholder: 'Select Cuisine'
allowClear: true
});
表单代码:
<div class="fields">
<%= f.label :cuisine_list, "Cuisines (separated by commas)" %>
<%= f.collection_select :cuisine_list, Recipe.cuisine_counts, :id, :name, {},
{ multiple: true, id: "cuisine-select", :style => "width:300px"} %>
</div>
编辑:已解决了部分内容,但现在当我加载编辑时,它正确加载,但是当我使用ids而不是名称更新它时更新。这就是我改为:
<div class="fields">
<%= f.label :cuisine_list, "Cuisines (separated by commas)" %>
<%= f.collection_select :cuisine_list, Recipe.cuisine_counts, :id, :name, {:selected => recipe.cuisine_counts.map(&:id)},
{ multiple: true, id: "cuisine-select", :style => "width:300px"} %>
</div>
此外我更改了页面:加载到turbolinks:加载,这似乎解决了在初次访问时未加载的问题。