0

したがって、私のプロジェクトモデルには現在、a、b、c、d、e、fなどの形式のタグという名前の列が含まれています...ビューには、チェックボックスをフィルター[]に収集するフォームがあります。 params[:filters] を使用してコントローラーで使用します。私の質問は、これらのタグの少なくとも 1 つを含むプロジェクトをどのようにフィルタリングするのですか?

def index
    @search = Project.search(params[:search])
    @projects = @search.???
end

みたいなことを思った

@projects = Project.search(:tags_contains => params[:filters])

また

params[:filters].each do |p|
    @projects ||= @search.where(["projects.tags like ?", p])
end

動作しますが、何も返されないようです。何かアドバイス?

例: チェックボックス a と c が、params[:filters] 内に含まれるフォームでチェックされたとします。私は3つのプロジェクトを持っています:

Project     | Tags
------------+------
Project 1   | a,b
Project 2   | c
Project 3   | a,c
Project 4   | d

この例では、少なくとも a または c が含まれているので、Project 1,2,3 を返したいと思います。

4

1 に答える 1

1

squeel gemを使って考え出した...

params[:filters].each do |p|
     @projects ||= @search.where(["projects.tags like ?", "%#{p}%"])
end
于 2012-07-19T08:30:15.803 に答える