我想在我的應用程序中允許用戶發佈狀態更新的表單中添加一個tokeninput jquery字段。我希望用戶能夠將作品(單獨的模型)附加到狀態更新。我正在使用act_as_taggable_on gem,我的查詢指定了標籤上下文「works」。但是,該字段不會加載任何搜索結果。如何在Rails中使用jquery tokeninput?
我實際上有第二個令牌輸入字段,允許用戶將標籤附加到狀態更新,就像本網站使用標籤附加到此問題單。它工作正常!我試圖反映該功能來指定上下文來搜索工作模型,我正在努力實現。
任何想法?您的時間和援助將不勝感激!下面是相關代碼:
樁模型
attr_accessible :content, :tag_list, :work_list
acts_as_taggable_on :tags
acts_as_taggable_on :works
柱控制器(更新)
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
形式
<%= f.text_field :tag_list, :id => "post_work_list", "data-pre" => @post.work_list.map(&:attributes).to_json %>
的JavaScript
$ ->
$("#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
路線
get "posts/tags" => "posts#tags", :as => :tags
get "posts/work_list" => "posts#work_list", :as => :work_list
謝謝!
編輯:我清理了這個問題,並更新了所有的代碼。我也開始對enginhere.com交談其中也有來自其他工程師其他一些故障排除:
隨時通過繼續對上述enginhere.com談話的談話,然後發佈最終,官方幫助在這裏回答賞金!
再次感謝!
感謝您的回覆!我無法得到這個工作,但這讓我想到:爲什麼不使用acts_as_taggable_on gem來處理像我用於標記的作品?我對我使用的代碼進行了鏡像,但工作區域仍然不起作用。儘管我正在接近!javascript加載但我在字段中輸入任何內容時遇到500錯誤。更新的問題。有任何想法嗎?謝謝!!! – winston
在控制檯中的服務器日誌中的錯誤描述如何?在#works方法中捕獲錯誤。 –
發起者GET 「/posts/works.json?q=op」 處理由PostsController#工作原理JSON 參數:{ 「Q」=> 「OP」} NameError(未初始化常數ActsAsTaggableOn ::工作): 500完成1ms內部服務器錯誤 app/controllers/posts_controller.rb:28:在'works'中 – winston