Теги jQuery-Вход с Rails4/Simple_form

Я использую Rails 4 с Simple_form и act_as_taggable.

Я пытаюсь реализовать <span> <a href="https://github.com/xoxco/jQuery-Tags-Input#instructions" rel="nofollow noreferrer" target="_blank">jQuery Tags Input</a></span> для моих тегов (atcs_as_taggable).

HTML для Tags_input:


который преобразуется в Simple_form:

<%= f.input :tag_list, input_html: { class: "tagsinput "} %>

Теги, которые я ввел до изменения, отображаются надлежащим образом в Edit/form, но NEW теги arent сохранены.

JS для my Tags_input прост:

$(".tagsinput").tagsInput({
 width: '300px'
 });

Что мне не хватает?

1 ответ

Как и для меня, этот плагин не самый лучший, который вы могли бы использовать.

Я бы пошел с

Используется для второго, но Chosen - отличный плагин, который теперь мой любимый.

Как для их реализации в рельсах:

Избранный

Gemfile

group :assets do
 gem 'chosen-rails'
end

приложение/активы/JavaScripts/application.js

//= require chosen-jquery

приложение/активы/таблицы стилей /application.css

*= require chosen

приложение/активы/JavaScripts/questions.js.coffee

jQuery ->
 $('#question_tags_ids').chosen()

вопросы /_form.html.erb

<div>
 <%= f.label :tag_ids, "Tags" %>
 <%= f.collection_select :tag_ids, Tag.order(:name), :id, :name, {}, {multiple: true} %>
</div>

jQuery Tokeninput

приложение/активы/JavaScripts/application.js

//= require jquery.tokeninput

приложение/активы/таблицы стилей /application.css

*= require token-input-facebook

приложение/активы/JavaScripts/questions.js.coffee

jQuery ->
 $('#question_tag_tokens').tokenInput '/tags.json'
 theme: 'facebook'
 prePopulate: $('#question_tag_tokens').data('load')

вопросы /_form.html.erb

<div>
 <%= f.label :tag_tokens, "Tags" %>
 <%= f.text_field :tag_tokens, data: {load: @question.tags} %>
</div>

модели /question.rb

attr_accessible :name, :tag_tokens
attr_reader :tag_tokens
def tag_tokens=(tokens)
 self.tag_ids = Tag.ids_from_tokens(tokens)
end

tags_controller.rb

def index
 @tags = Tag.order(:name)
 respond_to do |format|
 format.html
 format.json { render json: @tags.tokens(params[:q]) }
 end
end

модели /tag.rb

def self.tokens(query)
 tags = where("name like ?", "%#{query}%")
 if tags.empty?
 [{id: "<<<#{query}>>>", name: "New: \"#{query}\""}]
 else
 tags
 end
end
def self.ids_from_tokens(tokens)
 tokens.gsub!(/<<<(.+?)>>>/) { create!(name: $1).id }
 tokens.split(',')
end

licensed under cc by-sa 3.0 with attribution.