我正在尝试使用select2来标记我的标签。但是,我在使它工作方面遇到了很多困难。我尝试过很多东西,但似乎什么都没有用,谷歌搜索和插入别人的解决方案对我来说并不起作用。使用select2和acts_as_taggable_on标记我的标记需要做什么? 我希望用户能够选择标签或创建标签(如果不存在)。
我正在使用Rails 5.我正在使用'select2-rails'宝石。
我的模特:
class Event < ApplicationRecord
belongs_to :user
acts_as_commentable
acts_as_taggable_on :tags
end
我的强烈指责:
def event_params
params.require(:event).permit(:title, :description, :tag_list, tag_lists: [])
end
注意:我也试过“tag_list:[]”(单数)。我试过没有“标签列表:[]”。当我删除“:tag_list”时,没有任何标记持久存储到数据库中。
我的观点:
<%= form_for @event do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :description %>
</p>
<p>
<%= f.label :tag_list, "Tags" %><br>
<%= f.text_field :tag_list %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
注意:我在这里尝试过一些东西,但这是我目前所处的位置。
我的js:
//= require jquery
//= require jquery_ujs
//= require select2
//= require turbolinks
//= require_tree .
//= require bootstrap
我的样式表:
/*
*= require_tree .
*= require_self
*= require select2
*/
我在events.coffee尝试过的事情:
$ ->
$('#event_tag_list').select2 tags: []
return
$('#event_tag_list').select2
tags: true
tokenSeparators: [',',' ']
注意:我已经尝试了一些其他的东西,但这是我最常用的工作。
答案 0 :(得分:-1)
我想如果有人遇到类似的问题,我会回答这个问题。它与Rails 5和Turbolinks的工作方式有关。浏览完RailsGuides后,我发现问题是Turbolinks会覆盖正常的页面加载过程。我将gem切换到Bootstrap-Tokenfield,但原理是一样的。这就是我修复javascript的方法:
$(document).on "turbolinks:load", ->
$('#event_tag_list').tokenfield();
我的强烈指责:
def event_params
params.require(:event).permit(:title, :description, :tag_list)
end
我的表格:
<p>
<%= f.label :tag_list, "Tags" %> <br>
<%= f.text_field :tag_list, value: f.object.tag_list.to_s %>
</p>
RailsGuides解释:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#how-turbolinks-works