Wie filtere ich ein boolesches Attribut mit Rails Ransack?
-
21-12-2019 - |
Frage
In meiner Rails-App habe ich ein Episodenmodell.Jede Episode hat ein boolesches Attribut cached
wodurch die Episode als zwischengespeichert gekennzeichnet wird.
Also episode.cached?
gibt true zurück, wenn die Episode zwischengespeichert ist.
Ich möchte meinem Suchformular ein Kontrollkästchen hinzufügen, das dies ermöglicht Nur zwischengespeicherte Episoden im Suchergebnis anzeigen.Ich verwende den Ransack-Gem, um meine Suchen zu erstellen.
Dies ist mein aktuelles Suchformular:
<%= 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 %>
Mit <%= f.check_box_tag :cached_true, 1, :checked => @query.cached_true %>
Ich habe versucht, ein Kontrollkästchen zu bekommen, das das tut, was ich oben beschrieben habe.Allerdings funktioniert es nicht.Es sagt undefined method 'cached_true' for nil:NilClass
.
Also:Wie kann ich ein Kontrollkästchen erstellen? „Zeige mir nur Episoden mit zwischengespeichert = wahr“?
Lösung
Habe die Lösung selbst gefunden:
<%= f.check_box :cached_true %>
<%= f.label :cached_true %>
Der check_box_tag
ist nur erforderlich, wenn Sie mehrere Elemente durchlaufen und für jedes ein Kontrollkästchen hinzufügen möchten.
Andere Tipps
Sie verwenden zwei Instanzvariablen: @query
Und @search
.
ich nehme an @search
ist nicht eingestellt.Versuchen @query
stattdessen.