それぞれ0個以上のカテゴリを持つプロジェクトのテーブルがあります。私の見解では、各カテゴリに関連付けられたJQueryクリックイベントまで0個のプロジェクトを表示したいと思います。つまり、ユーザーが[Food]をクリックしたときに、カテゴリFoodのすべてのプロジェクトを表示したいと思います。ユーザーが「写真」をクリックすると、食べ物と写真関連のプロジェクトの両方が表示されます。
したがって、jQueryクリックイベントでajax呼び出しを定義します。
params = 'category_name=' + cat;
$.ajax({
url: "/projects_controller/filter_list",
data: params
})
ここで、「cat」は選択したカテゴリの名前です(「FoodPhotographyJournalなど」の形式で)
私のprojects_controllerで、filter_listメソッドを開始しました。
def filter_list
@categories = []
words = params[:category_name].split(/\W+/)
words.each { |word| @categories.push(Category.where("name = ?", word)) }
@projects = ...
end
しかし今、私は立ち往生しています。1)@categoriesのカテゴリのいずれかに関連付けられているすべてのプロジェクトを取得するにはどうすればよいですか?および2)ビューに@projects変数を表示するにはどうすればよいですか?今、私はこのようにすべてを表示します:
<% Project.all.each do |project| %>
<tr style="display:none" class="project <% project.categories.all.each do |cat| %><%= cat.name %> <% end %>">
<td><%= project.filename %></td>
<td><a href='project/<%= project.id %>'><%= project.location %></a>
<td><% project.categories.all.each do |cat| %><%= cat.name %>, <% end %></td>
<% end %>