如何使用范围编写复选框活动记录搜索

时间:2016-04-25 11:38:24

标签: ruby-on-rails ruby-on-rails-3 activerecord

如何在ruby中搜索范围复选框

我有这样的形式

<% VenueCategory.all.each do |c| %>
 <%= check_box_tag("venue_categories[]", c.id)%>
 <%= c.name%>
<% end %>`

如果选择了多个选项,我想搜索会场类别。如何使用范围

我试过这样的 在我的property.rb模型中

scope :venue_category, -> (venue_categories_id) { where venue_category_ids: venue_categories }

控制器:

@properties = Property.where(:status=>'1') @properties = @properties.venue_categories(params[:venue_categories]) if params[:venue_categories].present?

model venuecategory.rb

class VenueCategory < ActiveRecord::Base belongs_to :property end

property.rb

class Property < ActiveRecord::Base has_and_belongs_to_many :venue_categories end

我尝试这个时遇到错误。

我不知道如何使用范围进行多个复选框选项搜索。如果有人知道,请帮助我。

任何帮助都很明显。

1 个答案:

答案 0 :(得分:2)

将范围视为名为venue_categories的函数,该函数接受参数 - venue_categories - 一组场地类别ID。

scope :venue_categories, -> (venue_categories) { where(id: venue_categories) }

此处id是要匹配的字段名称。

<强>控制器

@properties = Property.where(status: '1')
@properties = @properties.venue_categories(params[:venue_categories]) if params[:venue_categories].present?

这应该有用。