在Rails

时间:2016-11-29 23:11:33

标签: jquery html ruby-on-rails tags select2

我正在尝试使用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: [',',' ']

注意:我已经尝试了一些其他的东西,但这是我最常用的工作。

1 个答案:

答案 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