【问题标题】:Sinatra - Is a sitewide param possible?Sinatra - 站点范围的参数是否可能?
【发布时间】:2014-06-07 01:40:18
【问题描述】:

我正在使用 haml 模板构建一个 Sinatra 应用程序,并且想知道是否可以实现某种站点范围的参数。就我而言,这个想法是允许为每条路线选择不同的layout.haml,而无需在应用程序中复制/重写每条路线。

例如,我想知道是否可以获取http://domain.com/route/:normal-params/?layout=layout_b,并能够将?template=template_choice 附加到应用程序中的任何路线并使用适当的布局。

我能想到的唯一一个似乎效率很低的解决方案是复制每条路由来寻找这个参数。我也觉得可以通过Filter 以某种方式实现它,但我不确定如何实现这样的事情。

【问题讨论】:

    标签: ruby sinatra haml


    【解决方案1】:

    您可以在对haml 的调用中指定要加载的布局:

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

    这样您就可以调用http://domain.com/route/foo/bar?layout=layout_b,Sinatra 将寻找名为layout_b 的适当布局进行渲染。

    如果没有作为 URL 参数提供,您可能需要指定要呈现的默认布局:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 2012-05-07
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多