【发布时间】:2016-06-22 15:38:31
【问题描述】:
我正在使用 ransack 让用户进行动态搜索:
控制器:
@q = Visit.search(params[:q]);
@visits = @q.result(distinct: true)
@q.build_condition
型号:
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + (_ransackers.keys)
end
查看:
<%= search_form_for @q, url: doctor_visits_path do |f| %>
<%= f.condition_fields do |c| %>
<%= render "condition_fields", f: c%>
<% end %>
<p><%= link_to_add_fields "Add condition", f, :condition %>
<div class="actions"><%= f.submit "Search", {:class => "btn"} %></div>
<% end %>
部分:
<div class="field">
<%= f.attribute_fields do |a| %>
<%= a.attribute_select({ associations:
[:specialists, :treatment_factors]
},{:class => "form-control"}) %>
<% end %>
<%= f.predicate_select({},{:class => "form-control"}) %>
<%= f.value_fields do |v| %>
<%= v.text_field :value,{:class => "form-control"} %>
<% end %>
<%= link_to "Remove", '#', class: "remove_fields" %>
</div>
我在 Visits 表中有几个布尔属性。当我在第一个字段中选择布尔属性时,在第二个字段中选择 true 或 false(predicate 字段)并保留第三个 value 字段为空,参数生成正确,但 sql 查询不正确,忽略条件,返回表中的所有记录。 可能是什么原因?
【问题讨论】: