2011-01-24 2 views
1
query = Micropost.order("created_at desc") 
    unless params[:tag_id].blank? or params[:tag_id] == "Select a tag" 
    tags = Tag.all 
    params[:tag_id].each do |index| 
     query = tags[Integer(index) - 1].microposts.order("created_at desc") & query 
    end 
    end 

이것은 내가 가지고있는 코드입니다. 기본적으로 태그에는 마이크로 포스트 (micropost)가 있으며, params [: tag_id] (여러 개의 select_tag 사용)에서 태그 배열을 지정할 때 태그로 지정된 모든 마이크로 포스트의 교차점을 원합니다.rails/ruby ​​: 필터링

이 코드는 배열에 단 하나의 태그 만 있지만 작동하지 않는 것으로 보입니다. 버그가 있습니까?

+0

tag_id에 대해 [tag_id => [ "64", "6"]가 나뉘어져 있어야하나요? – SuperString

답변

0

내가 무엇을하려고하는지 완전히 이해하고 있는지 잘 모르겠습니다. 하지만 아마도이 라인을 따라 뭔가가 당신이 무엇입니까 후 (unless 들어가는가) 무엇입니까? 어떤 태그가 게시물에 대한

: 선택한 태그와 관련된 microposts의 컬렉션 모든 Micropost의 교차점을 원하는 경우

tags = Tags.where(:id => params[:tag_id]).all 
posts_with_tags = tags.map(&:microposts).inject { |memo, elem| memo & elem } 
+0

이것은 a 또는 b를주는 데 사용됩니다. 어떻게 a와 b를 줄 수 있습니까? 여기서 a 및 b는 태그입니다. – SuperString

+0

수정 됨; 어떻게에 대한? –

0

: 모든 태그가 게시물에 대한

tags = Tags.where(:id => params[:tag_id]).all 
posts_with_tags = tags.map(&:microposts).flatten.uniq 

선택한 태그와 관련된 모든 마이크로 포스트를 쿼리하고 마이크로 포스트를 수집해야합니다. rails3

unless params[:tag_id].blank? or params[:tag_id] == "Select a tag" 
    query= Tag.where(["id in (?)",params[:tag_id]]).collect(&:microposts).uniq 
end 

와 어쩌면 내가 미안 해요, 당신의 질문을 오해했다.

+0

잘 모르겠다면, 평평하지 못한 것일 수도있다 –

+0

나는 모두에 대해 정의되지 않은 메소드가있다. – SuperString