我有一个表项目,每个项目都有 0 个或更多类别。在我看来,我想显示 0 个项目,直到与每个类别相关联的 JQuery 单击事件——即当用户单击“食物”时,我想显示所有具有食物类别的项目;当用户单击“照片”时,我想同时显示与食物和照片相关的项目。
因此,在 jQuery click 事件中,我定义了一个 ajax 调用:
params = 'category_name=' + cat;
$.ajax({
url: "/projects_controller/filter_list",
data: params
})
其中“cat”是所选类别的名称(格式为“Food Photography Journal etc”)
在我的 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 %>