0

我有这个观点

- f.checks :membership_cancelled_true , [["canceled membership", true] ], :class => 'checkboxy' do |check|
          = check.box
          = check.label

我使用 MetaSearch gem,它运行良好,但现在我将 rails 升级到 4.0,我必须使用 Ransack gem(这是 MetaSearch 的新版本),这个复选框不起作用。

这是错误:

undefined method `checks' for #<Ransack::Helpers::FormBuilder:0xb42f015c>
4

1 回答 1

3

Ransack::Helpers::FormBuilder继承自::ActionView::Helpers::FormBuilder。它没有提供checks类似的方法MetaSearch::Helpers::FormBuilder。MetaSearch 的checks方法建立了一组check_box_taglabel_tag值。

在 Ransack 中,对于您在问题中包含的单个复选框条件,我们可以执行以下操作:

<%= f.check_box :membership_cancelled_true %>
<%= f.label :membership_cancelled_true %>

对于多复选框条件,我们希望包含属性与一组检查值中的任何一个匹配的所有记录,我们可以执行以下操作:

<% predicate = "my_attribute_in" %>
<% { "Value One" => "1", "Value Two" => "2", "Value Three" => "3"}.each do |label, value| %>
  <%= check_box_tag "q[#{predicate}][]", value, params.try(:[],:q).try(:[],predicate).try(:include?, value), id: "q_#{predicate}_#{value}" %>
  <%= label_tag "q_#{predicate}_#{value}", label %><br />
<% end %>
于 2013-12-06T16:31:25.690 回答