簡體   English   中英

在Rails中具有act_as_taggable_on的select2

[英]select2 with acts_as_taggable_on in Rails

我正在嘗試使用select2標記我的標簽。 但是,要使其正常工作,我遇到了很多困難。 我已經嘗試了很多方法,但是似乎沒有任何效果,並且谷歌搜索和插入他人的解決方案對我而言並不奏效。 我需要怎么做才能使用select2和acts_as_taggable_on標記標記? 我希望用戶能夠選擇標簽或創建標簽(如果標簽不存在)。

我正在使用Rails5。我正在使用“ select2-rails” gem。

我的模特:

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: [',',' ']

注意:我已經嘗試了其他一些方法,但這是我最努力的工作。

我以為如果有人遇到類似問題,我會回答這個問題。 它與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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM