【问题标题】:Rails Acts as Taggable On--Multiple Context Tag filterRails 充当 Taggable On--Multiple Context Tag 过滤器
【发布时间】:2015-12-21 12:19:43
【问题描述】:

我正在使用acts-as-taggable-on 来标记汽车模型。我有三种不同的标签上下文:品牌、颜色和特征。前两个 Make & Color 在 ENV 变量中预定义,最后一个上下文是用户生成的(自动车窗、加热座椅等)

我想做的是让它从我的索引页面中一次可以被多个标签过滤。因此,例如,我希望索引页面顶部的一系列复选框为每个上下文设置一个单独的集合,用户可以在其中检查现代和红色,并且汽车索引将仅填充红色现代。目前,我的汽车控制器中有一条路线和一些代码,允许我按一个标签进行过滤,但我想修改它以按用户选择的任何内容进行过滤。

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

【问题讨论】:

  • 谈谈你的看法?你能更新你的问题吗?
  • 我的观点非常复杂,但它基本上只是实例变量@cars 上的每个循环
  • 您是否使用选择选项来搜索您的标签?
  • 我想使用一系列复选框

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


【解决方案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

【讨论】:

  • 这样可以正常工作,它会在视图中创建复选框,但它会自动检查所有这些复选框,它也无法提交所选复选框的查询。
  • 所以我发现我需要一个提交按钮,然后我删除了@selected 标签变量将更新我的代码。谢谢你的回答让我走上正轨
  • 不客气。是的,你是对的。您可以在那里添加提交按钮。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多