[英]Adding a tag if it doesn't exist in rails chosen rails
可以使用Selectize.js,Acts_as_Taggable和SimpleForm:
首先,将输入从collection_select更改为普通字符串输入。 Selectize.js会将所有值分隔为标记,只要有逗号即可。 这是在后台发生的,因此当人们添加标签时,实际上是使用您提供的任何定界符将长字符串插入数据库。 然后,您需要向该字段添加一个ID,以便可以初始化selectize,例如:
<%= f.input :nationalities, as: :string, placeholder: "Nationalities", input_html: { id: 'nationality-input'} %>
然后初始化selectize.js:
#The following line gets all tags ever posted for a user with the context 'nationalities' which we will use as options.
<%=nations = ActsAsTaggleOn::Tagging.includes(:tag).where(context: 'nationalities').uniq.pluck(:id, :name)
$(document).ready(function() {
$('#nationality-input).selectize({
delimiter: ',',
persist: true,
allowEmptyOption: false,
options: [
<% nations.each do |nat| %>
{text: '<%=nat[1] %>', value: '<%=nat[1]%>' },
<% end %>
searchField: 'text',
create: function(input) {
return {
value: input,
text: input
}
}
});
});
确保正确设置了act_as_taggable设置,并且相应的模型包括它。 然后在您的控制器中,只需将整个字符串保存为逗号和所有内容,然后允许select自动在视图上重新设置其格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.