我使用act-as-taggable-on来标记Car模型。我有三种不同的标签上下文:Make,Color&特征。前两个Make&颜色在ENV变量中预定义,最后一个上下文由用户生成(自动窗口,加热座椅等)
我想做的是让它从我的索引页面一次可以通过多个标签过滤汽车。因此,例如,我想在索引页面顶部的一系列复选框为每个上下文设置一个单独的集合,用户可以在其中查看Hyundai&红色和汽车指数将只有红色的Hyundais。目前我的汽车控制器中有一条路线和一些代码,允许我按一个标签进行过滤,但我想修改它以按用户选择的方式进行过滤。
的routes.rb
get 'tags/:tags', to: 'cars#index', as: :tag
控制器
def index
if params[:keyword].present?
@cars = Car.tagged_with(params[:keyword])
else
@cars = Car.all.order(:cached_weighted_score => :desc)
end
end
答案 0 :(得分:1)
@selected_tag
是已在索引页中选择作为参数的标记。
<强>控制器强>
def index
if params[:keyword].present?
@selected_tag = params[:keyword]
@cars = Car.tagged_with(params[:keyword])
else
@cars = Car.all.order(:cached_weighted_score => :desc)
end
end
查看强>
它只是原型视图,因此您必须与自己的代码结合使用。
<% @tags.each do |tag| %>
<div>
<%= check_box_tag "keywords[]", tag.name, @selected_tag.present? ? @selected_tag.include?(tag.name) : '' %>
<%= tag.name %>
</div>
<% end %>
我希望我能对我的描述作一般性的概述。 有关prepopulate data in checkbox
的更多信息