내 사진보기에는 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%')
이 다시 나타납니다. 이견있는 사람? 아마 처음부터 이것을 할 수있는 더 좋은 방법이 있을까요?
굉장! 그래도 작동하지만 태그 필드가 아니라 사진 필드이므로'이름 또는 설명 '을 제거해야합니다. 태그 검색을 위해 별도의 메소드를 생성해야합니까, 아니면'tags.name'가'tags' 테이블에 있고'name or description'이 photos 테이블에있는 동안 지정할 수 있습니까? –
해당 필드가 다른 테이블에 있으면 이벤트를 할 수 있지만이 'joins (: tags) .where ('photos.name 또는 photos.description 또는 tags.name LIKE? ', "% # {search} % ")' – cicloon
트릭을 수행하는 데 감사드립니다. 흥미롭게도 검색 결과에 5 배 이상 나타나는 특정 사진이 있습니다! 정말 이상해. 나는 이유를 알아 내려고 노력할 것이다. –