Je construis une application Sinatra avec des modèles de haml et je me demandais s'il était possible d'implémenter un paramètre à l'échelle du site. L'idée, dans mon cas, serait de permettre une autre layout.haml
pour pouvoir être sélectionné pour chaque itinéraire sans avoir à dupliquer / réécrire chaque itinéraire dans l'application.
Par exemple, je me demandais s'il serait possible de pouvoir obtenir http://domain.com/route/:normal-params/?layout=layout_b
, et pouvoir ajouter ?template=template_choice
vers n'importe quel itinéraire dans l'application et utilisez la mise en page appropriée.
La seule solution à laquelle je peux penser, qui semble très inefficace, est de dupliquer chaque route pour rechercher ce paramètre. J'ai aussi l'impression que cela pourrait être réalisé d'une manière ou Filtre mais je ne sais pas comment une telle chose pourrait être mise en œuvre.
Réponses:
2 pour la réponse № 1Vous pouvez spécifier la mise en page que vous souhaitez charger dans votre appel haml
:
haml :post, :layout => params[:layout].to_sym
De cette façon, vous pouvez appeler http://domain.com/route/foo/bar?layout=layout_b
et Sinatra recherchera la disposition appropriée nommée layout_b
pour rendre.
Vous voudrez probablement spécifier une mise en page par défaut à afficher si aucune n'est fournie comme paramètre d'URL:
haml :post, :layout => (params[:layout] || "default").to_sym