我正在尝试实施一个“复选框搜索”,允许用户根据他们选择的参数过滤掉记录(例如“全职”,“兼职”,“承包商”job_type)。我当前的代码只允许用户搜索一个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
如何修改此代码以允许某人搜索“兼职”和/或“全职”等职位记录?
答案 0 :(得分: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 compatible