/ / Sinatra - É possível um parâmetro em todo o site? - rubi, sinatra, haml

Sinatra - É possível um parâmetro de todo o site? - rubi, sinatra, haml

Estou construindo um aplicativo Sinatra com modelos de haml e queria saber se é possível implementar algum parâmetro em todo o site. A ideia, no meu caso, seria permitir uma diferente layout.haml para poder ser selecionado para todas as rotas sem ter que duplicar / reescrever todas as rotas no aplicativo.

Por exemplo, eu queria saber se seria possível obter http://domain.com/route/:normal-params/?layout=layout_be poder anexar ?template=template_choice para qualquer rota no aplicativo e use o layout apropriado.

A única solução que consigo pensar, que parece muito ineficiente, é duplicar cada rota para procurar esse parâmetro. Eu também sinto que isso poderia ser alcançado de alguma forma com um Filtro mas não tenho certeza de como isso poderia ser implementado.

Respostas:

2 para resposta № 1

Você pode especificar qual layout você deseja carregar na sua chamada para haml:

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

Dessa forma, você pode ligar http://domain.com/route/foo/bar?layout=layout_b e Sinatra procurará o layout apropriado chamado layout_b para renderizar.

Você provavelmente desejará especificar um layout padrão para renderizar se nenhum for fornecido como um parâmetro de URL:

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