0

我正在尝试实现“复选框搜索”,允许用户根据他们选择的参数(例如“全职”、“兼职”、“承包商”工作类型)过滤掉记录。我当前的代码只允许用户搜索一个job_type,而不是一个和/或另一个。

我当前的设置如下所示:

索引控制器操作:

def index
  @jobs = Job.search(params[:search])
end

索引视图:

<%= form_tag jobs_path, :method => 'get' do %>
  <p>
    <%= check_box_tag :search, value = "Contractor", params[:search] %>
    <%= check_box_tag :search, value = "Part time", params[:search] %>
   <%= check_box_tag :search, value = "Full time", params[:search] %>
    <%= submit_tag "Search", :job_type => nil %>
  </p>
<% end %>

工作模式:

  def self.search(search)
    if search
      find(:all, :conditions => ['job_type LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
  end

如何修改此代码以允许某人搜索“兼职”和/或“全职”等工作记录?

4

1 回答 1

1

首先,您需要将视图代码更改为如下所示,以便可以从表单发送多个搜索参数值

查看代码

<%= form_tag jobs_path, :method => 'get' do %>
  <%= check_box_tag "search[]", "Contractor" %>
  <%= label_tag "Contractor" %>
  <%= check_box_tag "search[]", "Part Time" %>
  <%= label_tag "Part Time" %>
  <%= check_box_tag "search[]", "Full Time", %>
  <%= label_tag "Full Time" %>
<% end %>

然后在模型中,您需要将搜索查询更改为基于多个参数进行搜索,如下所示

def self.search(search)
  if search.blank?
    all
  else
    where("job_type IN (?)", search)
  end
end

搜索参数将是一个数组,其中包含从视图中选择的值

模型查询与 rails 3 兼容

于 2013-11-06T05:52:08.430 回答