我正在开发一个使用标签的应用程序,为此,我使用 jquery tokeninput 和acts_as_taggable_on,但是当保存一些更改时,标签开始显示 id 编号而不是名称,当再次使用数字再次保存现有标签时作为名字。
我认为这是一个数据预错误或映射错误。
在我看来:
= form_for @profile, :html=> {:class => 'custom'} do |f|
= f.text_field :skill_list, :id => "profile_skills", "data-pre" => @profile.skills.to_json
控制器:
def skills
query = params[:q]
if query[-1,1] == " "
query = query.gsub(" ", "")
ActsAsTaggableOn::Tag.find_or_create_by_name(query)
end
@skills = ActsAsTaggableOn::Tag.all
@skills = @skills.select { |v| v.name =~ /#{query}/i }
respond_to do |format|
format.json { render :json => @skills.map{|t| {:id => t.name, :name => t.name }}}
end
结尾
应用程序.js:
$(function(){
$(document).foundation();
$("#profile_skills").tokenInput("/profiles/skills.json", {
prePopulate: $("#profile#skills").data("pre"),
preventDuplicates: true,
hintText: "Ingresa alguna habilidad",
noResultsText: "No se encontraron tags, crea uno con espacio",
searchingText: "Buscando...",
animateDropdown: true,
theme: 'facebook'
}); });
路线:
get "profiles/skills" => "profiles#skills", :as => :profiles_skills