【发布时间】:2017-04-19 11:10:31
【问题描述】:
在主页上,我有一个视频和图片列表。这些视频和图片属于一个类别。所以,我有一个类别过滤器和一个类型过滤器(视频或图片)。问题是我不能同时使用两个过滤器而不改变第一个过滤器。例如,如果我只想显示图片,然后我想要一个特定的类别,我会从所选类别中获取所有图片和 视频。
图片过滤器示例:
view/galeries/index.html.erb
<%= link_to show_pictures_path, :remote => true, :id => "btn-pictures", :class => "btn btn-default" do %>
<em class="glyphicon glyphicon-picture"></em> Pictures
<% end %>
控制器/galeries_controller.rb
def show_pictures
@selected = Picture.order('created_at DESC')
end
查看/galeries/show_pictures.js.erb
$("#media_filter").html("<%= escape_javascript(render partial: 'partials/media_filter', locals: { medias: @selected } ) %>");
编辑 - 类别示例:
查看/galeries/index.html.erb
<% @categories.each do |c| %>
<li class="" id=btn-filter<%=c.id%>>
<%= link_to show_categories_path(:id => c.id), :remote => true do %>
<span class="badge pull-right"><%= Media.joins(:pictures).where(category_id: c.id).count + Media.joins(:videos).where(category_id: c.id).count %></span> <%= c.name %>
<% end %>
</li>
<% end %>
控制器/galeries_controller.rb
def show_categories
@videos = Video.joins(:media).where("medium.category_id = ?", params[:id])
@pictures = Picture.joins(:media).where("medium.category_id = ?", params[:id])
end
查看/galeries/show_categories.js.erb
$("#media_filter").html("<%= escape_javascript(render partial: 'partials/media_filter', locals: { medias: @videos} ) %>");
$("#media_filter").append("<%= escape_javascript(render partial: 'partials/media_filter', locals: { medias: @pictures } ) %>");
【问题讨论】:
-
您可以使用两个选择标签,一个用于类别,一个用于类型,一个用于搜索的提交按钮
-
类别过滤器也是链接?过滤器一次应用一个?如果您共享完整的代码(即两个过滤器,不只是一个),将会有所帮助。
-
是的,这是两个链接,它们不是同时应用的。类别过滤器与此类似。
标签: javascript ruby-on-rails ruby view filter