【问题标题】:How to render template and layout from different directories with Sinatra如何使用 Sinatra 从不同目录渲染模板和布局
【发布时间】:2012-06-22 13:10:50
【问题描述】:

我想将模板文件放在不同的目录中。 (foo/, bar/)

您如何使用 Sinatra 编写代码?

这样会出错。

【问题讨论】:

    标签: ruby sinatra haml


    【解决方案1】:

    来自documentation

    set :views, Proc.new { File.join(root, "templates") }
    

    如果您想使用多个目录(也来自文档):

    set :views, ['views', 'templates']
    
    helpers do
      def find_template(views, name, engine, &block)
        Array(views).each { |v| super(v, name, engine, &block) }
      end
    end
    

    顺便说一句,您需要使用符号而不是字符串来引用模板。所以完整的代码是:

    require 'rubygems'
    require 'sinatra'
    require 'haml'
    
    set :views, ['foo', 'bar']
    
    helpers do
      def find_template(views, name, engine, &block)
        Array(views).each { |v| super(v, name, engine, &block) }
      end
    end
    
    get '/' do
      haml :index, :layout => :bar
    end
    

    你有这些文件:

    foo/index.haml
    bar/bar.haml
    

    【讨论】:

    • 我想把 2 个文件分开的目录。 (foo/index.haml, bar/layout.haml)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2014-04-11
    • 1970-01-01
    • 2015-03-11
    • 2012-10-17
    相关资源
    最近更新 更多