eq_any用于布尔属性 - ransack

Ren*_*nan 6 ruby-on-rails-3 ransack

我的模型中有一个布尔属性(已发布),我book希望使用该值的复选框过滤所有书籍.

class Book < ActiveRecord::Base
  attr_accessible :published
end
Run Code Online (Sandbox Code Playgroud)

这意味着,我想是这样eq_any,但对于truefalse.有没有办法用Ransack做到这一点?

UPDATE

我希望用户能够只选择出版的书籍,只选择未出版的书籍和任何书籍.所以单个复选框不会.

spa*_*ode 5

选择的答案效果很好,但是,至少在 2016 年,可以写出更好的东西。利用“eq”功能可以删除一些配置。最终结果是:

<%= f.select :published_eq, [['Yes', true], ['No', false]], include_blank: 'All' %>
Run Code Online (Sandbox Code Playgroud)


QMF*_*FNP 2

Renan,您可以使用“true”和“false”谓词来执行此操作(其他谓词列在下面的文档链接中)。

在您的表单中,您的复选框代码将如下所示:

<%= f.checkbox :published_true %>
<%= f.checkbox :published_false %>
Run Code Online (Sandbox Code Playgroud)

因此,在您的表单中,选中第一个复选框 (published_true) 将返回已发布为 true 的所有书籍,选中第二个框 (published_false) 将返回已发布为 false(未发布)的所有书籍,并且在不选中任何一个框的情况下提交表单将返回返回所有书籍。

更多信息可以在此处的文档中找到: https: //github.com/ernie/ransack/wiki/Basic-Searching