Používam Koľajnice 4 s Jednoduchá forma a acts_as_taggable.
Snažím sa implementovať jQuery Tagy Vstup pre moje značky (atcs_as_taggable).
HTML pre Tags_input je:
<input name="tagsinput" class="tagsinput" value="School,Teacher,Colleague" />
ktorý sa prekladá Jednoduchá forma:
<%= f.input :tag_list, input_html: { class: "tagsinput "} %>
Značky, ktoré som zadal pred zmenou, sú správne zobrazené v Edit / form, ale NEW tags arent Uložené.
Služba JS pre moju značku Tags_input je jednoduchá:
$(".tagsinput").tagsInput({
width: "300px"
});
Čo chýba?
odpovede:
13 pre odpoveď č. 1Pokiaľ ide o mňa, tento plugin nie je najlepšie, čo by ste mohli použiť.
Chcel by som ísť s
- zvolený http://harvesthq.github.io/chosen/ alebo
- jQuery Tokeninput http://loopj.com/jquery-tokeninput/.
Používa sa ako 2. ďalšie, ale Chosen je skvelý plugin, ktorý je teraz mojím najobľúbenejším.
Pokiaľ ide o ich vykonávanie v železničnej doprave:
zvolený
Gemfile
group :assets do
gem "chosen-rails"
end
app / aktíva / Java skripty / application.js
//= require chosen-jquery
app / assets / štýly / application.css
*= require chosen
app / assets / JavaScripts / questions.js.coffee
jQuery ->
$("#question_tags_ids").chosen()
Otázky / _form.html.erb
<div class="field">
<%= f.label :tag_ids, "Tags" %><br />
<%= f.collection_select :tag_ids, Tag.order(:name), :id, :name, {}, {multiple: true} %>
</div>
jQuery Tokeninput
app / aktíva / Java skripty / application.js
//= require jquery.tokeninput
app / assets / štýly / application.css
*= require token-input-facebook
app / assets / JavaScripts / questions.js.coffee
jQuery ->
$("#question_tag_tokens").tokenInput "/tags.json"
theme: "facebook"
prePopulate: $("#question_tag_tokens").data("load")
Otázky / _form.html.erb
<div class="field">
<%= f.label :tag_tokens, "Tags" %><br />
<%= f.text_field :tag_tokens, data: {load: @question.tags} %>
</div>
Modely / 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
Modely / 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