![](/img/trans.png)
[英]acts_as_taggable_on and select2 returning weird results in Active Admin
[英]acts_as_taggable_on and auto_complete returning no results
我在模型中使用acts_as_taggable_on,並嘗試實現auto_complete插件。 似乎我已正確連接了所有內容,但搜索未返回任何結果。 這是我到目前為止的內容:
在視圖中:
<%= text_field_with_auto_complete(:link, :tag_list, {}, {:tokens => ','}) %>
在控制器中:
def auto_complete_for_link_tag_list
@tags = Link.tag_counts_on(:tags).where('tags.name LIKE ?', params[:link][:tag_list])
render :inline => "<%= auto_complete_result(@tags, 'name') %>", :layout => false
logger.info "#{@tags.size} tags found."
end
記錄器不斷返回0標簽,並且視圖中沒有任何顯示(是的,布局包括javascript默認值)。 正在生成的SQL看起來像:
SELECT tags.*, COUNT(*) AS count FROM "tags" LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'tags' INNER JOIN links ON links.id = taggings.taggable_id WHERE (((tags.name LIKE 'so') AND (taggings.taggable_type = 'Link'))) GROUP BY tags.id, tags.name HAVING COUNT(*) > 0
任何想法或建議都很棒。
您還可以使用ActiveRecord
建立類似的查詢
def self.tagged_like(term)
conditions = ["taggings.taggable_type = 'Link' AND LOWER(tags.name) LIKE ?",
"%#{term.downcase}%"]
ActsAsTaggableOn::Tag.find(:all,
:include => "taggings",
:conditions => conditions)
end
這將生成以下SQL:
SELECT [..fields..] FROM "tags" LEFT OUTER JOIN "taggings" ON taggings.tag_id = tags.id
WHERE (taggings.taggable_type = 'Link' AND LOWER(tags.name) LIKE '%something%')
AATO版本2.0.6
我遇到了這個問題,最后寫了自己的SQL,您的SQL可能看起來像這樣:
@tags = Tag.find_by_sql("SELECT tags.name, tags.id
FROM tags JOIN taggings ON tags.id = taggings.tag_id
JOIN links ON taggings.taggable_id = links.id
JOIN groups ON links.group_id = groups.id
WHERE groups.id = X
AND tags.name LIKE '%?%'",params[:link][:tag_list])
您需要更新groups.id = X部分,因為我不確定您如何獲取group_id。
Tag是插件提供的類,像這樣手動提供sql可為您提供世界上所有的靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.