Rails作为Taggable On - 多个上下文标记过滤器

时间:2015-09-24 01:54:33

标签: ruby-on-rails search filter acts-as-taggable-on param

我使用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

1 个答案:

答案 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

的更多信息