如何使用Rails Ransack过滤布尔属性?

时间:2014-04-13 10:14:15

标签: ruby-on-rails search checkbox boolean ransack

在我的Rails应用程序中,我有一个剧集模型。每集都有一个布尔属性cached,用于将剧集标记为缓存。

如果剧集被缓存,则episode.cached?返回true。

我想在搜索表单中添加一个复选框,以便在搜索结果中仅显示缓存的剧集。我使用ransack gem来构建我的搜索。

这是我目前的搜索表单:

<%= search_form_for @query, url: playlist_management_search_path(channel_playlist: @channel_playlist.id), method: :get, remote: true do |f| %>
    <%= f.text_field :title_or_subtitle_cont, :placeholder => "Verzeichnis durchsuchen", :id => "search-input-field" %>
    <%= f.check_box_tag :cached_true, 1, :checked => @query.cached_true %>
    <%= f.submit "Search", :class => "prefix button" %>
<% end %>

使用<%= f.check_box_tag :cached_true, 1, :checked => @query.cached_true %>我试图找到一个复选框来执行我上面描述的操作。但它不起作用。它说undefined method 'cached_true' for nil:NilClass

所以:我怎样才能创建一个像这样的复选框“只显示cached = true的剧集”?

2 个答案:

答案 0 :(得分:3)

自己找到解决方案:

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

仅当您想循环浏览几个元素并为每个元素添加一个复选框时,才需要check_box_tag

答案 1 :(得分:0)

您使用两个实例变量:@query@search 我认为没有设置@search。请改为@query