ruby - 如何使用 Sinatra 从不同的目录渲染模板和布局

标签 ruby sinatra haml

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

你如何使用 Sinatra 编写代码?

image

这样会出错。

最佳答案

来自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

关于ruby - 如何使用 Sinatra 从不同的目录渲染模板和布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118871/

相关文章:

ruby-on-rails - 为什么 Module.sum( :field) is integer?

json - as_json 运行速度非常慢(Mongoid + Sinatra)

ruby - 使用 Sinatra 获取 Facebook signed_request

ruby - 创建 ActiveRecord 模型时出现问题 : data missing from save

python - web.py 上的 HAML/SCSS

ruby - 将 java 二维数组转换为 ruby

ruby-on-rails - 如何为特色对象预填充表单?

ruby-on-rails - bundle install 在通过 ansible playbook 安装私有(private) gem 时挂起

jquery - 可重复使用的远程模态 Rails

ruby-on-rails - 如何在 HAML 中制作此链接标签?