在我的照片視圖中,有一個使用text_field進行搜索的選項。我想通過點擊預定義標籤添加一個選項來「搜索」。也許search
不是最好的方式來做到這一點。通過SQL在不同模型中搜索的導軌過濾器
這是在我的模型的搜索方法:我不知道,我既正確調用此
def self.search(search)
if search
where('name or description or tag.name LIKE ?', "%#{search}%")
else
scoped
end
end
...但這些都是我的照片索引視圖中創建的鏈接:
<% @tags.each do |tag| %>
<%= link_to tag.name, :search => tag.name, :class => "tag" %>
<% end %>
Tags
不在照片列表中,但與照片具有HABTM關係。我通常可以通過簡單地使用@ photo.tags.name或類似的東西來調用它們。 無論如何,當我點擊一個標籤時,它會吐出一個SQLite3::SQLException: no such column: tag.name: SELECT COUNT(*) FROM "photos" WHERE (name or description or tag.name LIKE '%landscape%')
。有什麼想法嗎?也許有一個更好的方法來做到這一點呢?
太棒了!這是有效的,但我必須刪除'name或description',因爲它們是照片字段,而不是標籤字段。我是否需要爲標記搜索創建單獨的方法,還是可以指定'tags'名稱位於'tags'表中,而'name或description'位於照片表中? –
如果這些字段在不同的表格中,你可以做到這一點,但只是爲了確保你可以使這個'連接(:標籤).where('photos.name或photos.description或tags.name LIKE?','% #{search}%「)' – cicloon
謝謝,這似乎是伎倆。有趣的是,現在有一張特定照片顯示任何搜索結果的5倍!真奇怪。我會試着找出原因。 –