/ / Sinatra - Un param à l'échelle du site est-il possible? - rubis, sinatra, haml

Sinatra - Un paramètre global est-il possible? - rubis, sinatra, haml

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 № 1

Vous 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