Ich habe tatsächlich ein zweites Token-Eingabefeld, das es Benutzern ermöglicht, Tags an die Statusaktualisierung anzuhängen, ähnlich wie diese Website Tags zum Anhängen an dieses Problemticket verwendet. Es funktioniert gut! Ich versuche, diese Funktionalität zu spiegeln, um den Kontext für die Suche im Werksmodell anzugeben, und habe Probleme mit der Implementierung.
Irgendwelche Ideen? Wir würden uns über Ihre Zeit und Unterstützung sehr freuen! Hier ist der relevante Code:
Post-Modell
Code: Select all
attr_accessible :content, :tag_list, :work_list
acts_as_taggable_on :tags
acts_as_taggable_on :works
Code: Select all
def work_list
query = params[:q]
@work_list = ActsAsTaggableOn::Tag.includes(:taggings).where("taggings.context = 'works'").where("tags.name ILIKE ?", "%#{params[:q].downcase.to_s}%").all
@work_list = @work_list.select { |v| v.name =~ /#{query}/i }
respond_to do |format|
format.json { render :json => @work_list.map{|w| {:id => w.name, :name => w.name }}}
end
end
def tags
query = params[:q]
if query[-1,1] == " "
query = query.gsub(" ", "")
ActsAsTaggableOn::Tag.find_or_create_by_name(query)
end
#Do the search in memory for better performance
@tags = ActsAsTaggableOn::Tag.all
@tags = @tags.select { |v| v.name =~ /#{query}/i }
respond_to do |format|
format.json{ render :json => @tags.map{|t| {:id => t.name, :name => t.name }}}
end
end
Code: Select all
"post_work_list", "data-pre" => @post.work_list.map(&:attributes).to_json %>
Code: Select all
$ ->
$("#post_tags").tokenInput "/posts/tags.json",
prePopulate: $("#post_tags").data("pre")
preventDuplicates: true
noResultsText: "No results, press space key to create a new tag."
animateDropdown: false
$ ->
$("#post_work_list").tokenInput "/posts/work_list.json",
prePopulate: $("#post_work_list").data("pre")
preventDuplicates: true
noResultsText: "No results"
animateDropdown: false
Code: Select all
get "posts/tags" => "posts#tags", :as => :tags
get "posts/work_list" => "posts#work_list", :as => :work_list
Mobile version