Je me bats avec quelque chose qui devrait être très simple - spécifier une barre latérale au niveau du contrôleur. Avec mise en page que vous pouvez faire ceci:Façon simple de spécifier la barre latérale dans le contrôleur
layout 'admin'
donc je voudrais faire la même chose pour une barre latérale, avec quelque chose comme ceci:
sidebar 'search'
Je sais que je pourrais spécifier le balisage de la barre latérale avec content_for dans les vues, mais je préfère spécifier la barre latérale au niveau du contrôleur et ne pas répéter le code dans (et encombrer) mes vues. J'aimerais aussi pouvoir partager des sidebars entre contrôleurs.
Au moment où j'ai cela dans un initialiseur (un plugin semble overkill pour quelque chose si simple):
module Sidebar
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def sidebar(partial)
# neither of these two work...
@sidebar = partial
instance_variable_set('@sidebar', partial)
end
end
end
ActionController::Base.send(:include, Sidebar)
puis dans ma mise en page que je suis en train
<%= render "shared/#{@sidebar}" %>
mais en vain ...
Est-ce que quelqu'un sait ce que je fais mal, ou si en effet je vais à ce sujet dans le bon sens du tout? Toute aide est grandement appréciée!
Salut Simone, merci pour votre réponse, cela a du sens. J'y ai pensé cependant et j'en suis arrivé à la conclusion que, bien que cela puisse signifier de spécifier la même barre latérale dans toutes les vues pour un contrôleur, il est préférable de définir la barre latérale dans la vue et de revenir à une valeur par défaut. dire. À votre santé Dave –