我将搜索数据保存在数据库中,以哈希的形式保存:
{"name_cont"=>"an", "c"=>{"1366814870748"=>{"a"=>{"0"=>{"name"=>"gender"}}, "p"=>"eq", "v"=>{"0"=>{"value"=>"female"}}}, "1366814890125"=>{"a"=>{"0"=>{"name"=>"shoe_size"}}, "p"=>"gt", "v"=>{"0"=>{"value"=>"2"}}}}}
然后我从中创建一个搜索表单:
@search = Sedcard.search hash
<%= search_form_for @search %>
如何根据类似于railscasts中提供的表单对象来迭代条件来创建选择?
答案 0 :(得分:0)
最后,我设法找到了正确的代码。这是在ransack演示示例中:
这个例子有点复杂,因为第一个字段(名称的搜索字段)显示在别处,它是静态的,因此不需要显示两次。并且ransack附加了一个没有预先选择的最后一个空过滤器,因此我也过滤了它。
= f.condition_fields do |c|
%div
- render_attribute = true
= c.attribute_fields do |a|
- regular_for_nondisplay = /\<option value=\"name\" selected\=\"selected\"\>Name\<\/option\>/
- regular_for_checking_not_empty = /selected=\"selected\"/
- filter_name = a.attribute_select
- if filter_name =~ regular_for_nondisplay || filter_name !~ regular_for_checking_not_empty
- render_attribute = false
-
- else
= filter_name
-
- if render_attribute
= c.predicate_select
= c.value_fields do |v|
= v.text_field :value
= link_to t('.remove'), '#', class: 'remove-fields btn-a btn-error'