Bonjour,
ca fait un petit moment que je cherche comment faire un filtre (checkbox/select), mais pas moyen de comprendre comment faire ca.
Bah j'ai fais le form qui contient les differents checkbox. Les params du filtre sont stockés.
{"utf8"=>"✓", "filter"=>{"date"=>["all"], "user"=>["1"], "sorted_by"=>["date"]}, "controller"=>"pages", "action"=>"dashboard"}
La structure de ma page est comme ca :
pages/dashboard.html.haml
J'ai ma liste d'items que je récupere dans ma pages_controller avec @items = Item.all.order('id ASC')
que j'affiche avec @tickets.each do |ticket|
Ce que je souhaite obtenir au final, c'est une liste d'items filtré par les params GET qui ont été séléctionnés.
Ce que j'obtiens pour l'instant c'est les params GET dans l'url et une liste d'items non filtré.
Merci de votre aide.
Tu peux essayer en testant le présence des paramètres, d'appliquer un scope sur ton model.
Exemple:
Dans ton controller:
if params[:date].present?
Ticket.by_user(params[:user])
end
Dans ton model:
scope :by_user, -> (user) { where('user = ?', ticket.user_id) }
scope :sorted_by, -> (sort) { order(sort + "ASC") }
En tout cas c'est sur cette piste que je me lancerais à ta place.
Un lien pour t'aider (il doit surement en exister d'autres) http://www.justinweiss.com/articles/search-and-filter-rails-models-without-bloating-your-controller/