2017-10-13 1 views
0

Ich habe ein kleines Ticketsystem für meine Benutzer erstellt. Ich habe Tickets wie Neu, In Bearbeitung und Abgeschlossen. Ich würde gerne in der Lage sein, auf der Seite umzuschalten, ob die abgeschlossenen ausgeblendet oder angezeigt werden. Was ist der beste Weg, dies zu tun? Der Parameter, der diese Werte enthält, lautet ticket.status.Rails 4 Filter Indexlisten mit Toggle

In Controller:

def index 
    @tickets = Ticket.all 

    if params[:filter_by] 
     @tickets = Ticket.where(:category => params[:filter_by]) 
    else 
     @tickets = Ticket.all 
    end 
end 

Im Index Ansicht:

<div> 
<div><%= link_to "Full Listing", tickets_path %></div> 
<div><%= link_to "Admin", tickets_path(:filter_by => :Administrative), {:method => :get} %></div> 
<div><%= link_to "Graphics", tickets_path(:filter_by => :Graphics), {:method => :get} %></div> 
<div><%= link_to "IT", tickets_path(:filter_by => :IT), {:method => :get} %></div> ||| 
<div><%= link_to "New entry", new_ticket_path %></div> ||| 
<div> 
    <% if current_user.present? %> 
    <%= link_to " Sign Out", sessions_path, method: :delete %> 
    <% end %> 
</div> 

+0

Können Sie ein HTML-Code für Knebel selbst zur Verfügung stellen? – AntonTkachov

+0

Aus dem Blick auf den HTML-Code, den ich betrachte, wird die Eingabe ein Kontrollkästchen sein. Von daher ist der Toggle nur Dressing. – lostrennie

+0

Können Sie Ihren Code aktualisieren und dieses Kontrollkästchen einschließen? – AntonTkachov

Antwort

0

Was ist mit Ihnen einen Blick auf Ransack, Simple und SimpleFormRansack nehmen? So baue ich die meisten meiner eigenen Indexfilter.

https://github.com/activerecord-hackery/ransack

https://github.com/plataformatec/simple_form

https://github.com/kaspernj/simple_form_ransack

In Ihrem Controller etwas tun, wie folgt aus:

def index 
    ransack_params = params[:q] || {} 
    ransack_params[:status_eq_any] ||= ["New"] 

    @ransack = Ticket.ransack(params[:q]) 
    @tickets = @ransack.result 
end 

Ihrer Ansicht nach könnten Sie so etwas tun:

<%= simple_search_form_for @ransack do |f| %> 
    <%= f.input :category_eq_any, collection: ["Administrative", "Graphics", "IT"] %> 
    <%= f.input :status_eq_any, collection: ["New", "Completed"] %> 
    <%= f.button :submit %> 
<% end %> 

<% @tickets.each do |ticket| %> 
    ... 
<% end %> 

Sie können auch Links zu vordefinierten Suchanfragen wie diese zeigen:

<%= link_to "Admin", tickets_path(q: {status_eq: "Administrative"}) %> 
+0

Das sieht sehr nützlich aus! Schnelle Frage, ich möchte immer, dass die Schaltflächen für die Kategorien funktionieren, aber ich möchte, dass die Toggle die fertigen Tickets einfach ein-/ausblendet, und mit dem Setup, das du mir oben gegeben hast, wird es das tun? – lostrennie