Novecento Normal
Novecento Demibold
Novecento Bold
Pour les amoureux des tableaux
Quel plaie de devoir mettre en place un tableau triable (sans JS) ! Pas de panique, il y a une gem pour chaque chose, et chaque chose a sa gem — à méditer.
Voici Datagrid qui permet d’avoir un résultat rapidement et proprement afin de se concentrer sur le reste (s’il reste quelque chose à faire). Pour l’utiliser, on crée un model qui n’hérite pas d’ActiveRecord, une classe vide, et on lui ajoute ces quelques lignes :
include Datagrid
# on définit le model utilisé dans notre tableau ici User
scope do
User
end
# les différents filtres
filter(:email, :string)
filter(:disabled, :eboolean)
filter(:registration_type, :enum, :select => User::REGISTRATION_TYPES.map {|r| [r.humanize, r]})
integer_range_filters(:logins_count, {:default => proc { User.minimum(:logins_count)}}, {:default => proc {User.maximum(:logins_count)}})
date_range_filters(:registered_at)
# les colonnes que l'on souhaite afficher
column(:id)
column(:email, :url => proc {|user| "mailto:#{user.email}"})
column(:registration_type) do |record|
record.registration_type.humanize
end
column(:logins_count)
column(:registered_at)
column(:disabled) do
self.disabled? ? "Yes" : "No"
end
Ensuite dans l’action et le controller concernés on ajoute ceci :
@user_report = UserReport.new(params[:user_report])
@assets = @user_report.assets.page(params[:page])
Et pour finir, une jolie vue utilisant pleins d’helpers pour encore plus de facilité :
<%= datagrid_table(@user_report, @assets) %>
<%= paginate @assets %>
Le lien utile