/ / Синатра - Възможен ли е парам в целия сайт? - рубин, синатра, хамл

Синатра - Възможно ли е паралелно на сайта? - руби, синатра, хамл

Изграждам приложение на Sinatra с шаблони за шаблони и се чудех дали е възможно да се реализира някакъв вид парам в целия сайт. Идеята в моя случай би била да се даде възможност за различно layout.haml за да можете да бъдете избрани за всеки маршрут, без да се налага да дублирате / пренаписвате всеки маршрут в приложението.

Например се чудех дали би било възможно да получавам http://domain.com/route/:normal-params/?layout=layout_bи да можете да добавите ?template=template_choice до всеки маршрут в приложението и използвайте подходящото оформление.

Единственото решение, за което мога да се сетя, което изглежда много неефективно, е да се дублира всеки отделен маршрут, за да се търси този параметър. Също така чувствам, че това може да се постигне по някакъв начин с a филтър но не съм сигурен как би могло да се приложи такова нещо.

Отговори:

2 за отговор № 1

Можете да посочите към кое оформление искате да заредите разговора си haml:

haml :post, :layout => params[:layout].to_sym

По този начин можете да се обадите http://domain.com/route/foo/bar?layout=layout_b и Синатра ще потърси подходящото оформление с име layout_b за рендериране.

Вероятно ще искате да посочите оформление по подразбиране, за да го направите, ако никой не е предоставен като параметър URL:

haml :post, :layout => (params[:layout] || "default").to_sym