ruby-on-rails – acts_as_taggable_on和select2在Active Admin
发布时间:2020-12-17 03:32:14 所属栏目:百科 来源:网络整理
导读:所以我一直在主动管理员中使用acts_as_taggable_on,并且大部分内容都按预期工作. 但是,每当我搜索标签并将现有标签添加到模型时,它似乎将其保存为ID,而不是名称.创建新标签会返回正确的名称,当我再次编辑对象时,标签仍会被名称标记.但是当我尝试添加另一个已
所以我一直在主动管理员中使用acts_as_taggable_on,并且大部分内容都按预期工作.
但是,每当我搜索标签并将现有标签添加到模型时,它似乎将其保存为ID,而不是名称.创建新标签会返回正确的名称,当我再次编辑对象时,标签仍会被名称标记.但是当我尝试添加另一个已经存在于数据库中的标记时,它会返回表单中的名称,并且似乎保存正常,但是当我再次编辑onject时,标记显示为ID,而不是而不是名字. 在admin / gift.rb中: controller do def autocomplete_gift_tags @tags = ActsAsTaggableOn::Tag .where("name LIKE ?","#{params[:q]}%") .order(:name) respond_to do |format| format.json { render json: @tags,only: [:id,:name],root: false } end end end 在tag-autocomlete.js中: $(document).ready(function() { $('.tagselect').each(function() { var placeholder = $(this).data('placeholder'); var url = $(this).data('url'); var saved = $(this).data('saved'); $(this).select2({ tags: true,placeholder: placeholder,minimumInputLength: 1,initSelection: function(element,callback) { saved && callback(saved); },ajax: { url: url,dataType: 'json',data: function(term) { return { q: term }; },results: function(data) { return { results: data }; } },createSearchChoice: function(term,data) { if ($(data).filter(function() { return this.name.localeCompare(term) === 0; }).length === 0) { return { id: term,name: term }; } },formatResult: function(item,page) { return item.name; },formatSelection: function(item,page) { return item.name; } }); }); }); 在我的_gift_form.html.erb中: <%= f.input :tag_list,label: "Tags",input_html: { data: { placeholder: "Enter tags",saved: f.object.tags.map{|t| {id: t.name,name: t.name}}.to_json,url: autocomplete_gift_tags_path },class: 'tagselect' } %> 无法解决为什么新的工作正常,但现有的标签不是. 解决方法
改变这个:
respond_to do |format| format.json { render json: @tags,root: false } end 对此: respond_to do |format| format.json { render :json => @tags.collect{|t| {:id => t.name,:name => t.name }}} end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |