2017-10-13 2 views
0

J'ai créé un petit système de billetterie pour mes utilisateurs. J'ai des billets en tant que nouveaux, en cours et complétés. Je voudrais pouvoir basculer sur la page si les complétés sont cachés ou montrés. Quelle est la meilleure façon de procéder? Le paramètre qui contient ces valeurs est ticket.status.Rails 4 Listes d'index de filtre avec toggle

Contrôleur:

def index 
    @tickets = Ticket.all 

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

En vue Index:

<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

Pouvez-vous fournir un code HTML pour bascule lui-même? – AntonTkachov

+0

En regardant le code html que je regarde, l'entrée va être une case à cocher. De ce que le toggle est juste habiller. – lostrennie

+0

Pouvez-vous mettre à jour votre code et inclure cette case à cocher? – AntonTkachov

Répondre

0

Que diriez-vous de jeter un oeil à Ransack, SimpleForm et SimpleFormRansack? C'est ainsi que je construis la plupart de mes propres filtres d'index.

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

https://github.com/plataformatec/simple_form

https://github.com/kaspernj/simple_form_ransack

Dans votre contrôleur faire quelque chose comme ceci:

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

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

À votre avis, vous pouvez faire quelque chose comme ceci:

<%= 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 %> 

Vous pouvez également afficher des liens vers des recherches prédéfinies comme celui-ci:

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

Cela semble très utile! Question rapide, je veux toujours que les boutons pour les catégories fonctionnent, mais je veux que la bascule cache/montre simplement les tickets terminés, et avec la configuration que vous m'avez donnée ci-dessus cela fera ça? – lostrennie