Ruby 在另一个slim文件中包括一个slim文件

Ruby 在另一个slim文件中包括一个slim文件,ruby,slim-lang,static-html,Ruby,Slim Lang,Static Html,我正在一个静态网站上工作(因此没有真正的服务器支持),我想在另一个网站中包含一个小的slim片段,可能会向它传递一个变量 这可能吗?在rails中非常简单,虽然使用了渲染方法,但我不知道如何在slim上执行它(显然加载方法对slim不起作用)。看起来可以这样做: Slim::Template.new('template.slim', optional_option_hash).render(scope) 在slim自述文件中找到:如果您想使用slim构建静态网站,我将强烈退出。Middlema

我正在一个静态网站上工作(因此没有真正的服务器支持),我想在另一个网站中包含一个小的slim片段,可能会向它传递一个变量


这可能吗?在rails中非常简单,虽然使用了
渲染
方法,但我不知道如何在slim上执行它(显然
加载
方法对slim不起作用)。

看起来可以这样做:

Slim::Template.new('template.slim', optional_option_hash).render(scope)

在slim自述文件中找到:

如果您想使用slim构建静态网站,我将强烈退出。Middleman从Padrino借用了常见的助手函数,如
render
partial
,Padrino是一种类似Rails的web框架,但使用更轻量级的Sinatra构建(所有这些都是很棒的软件)

要点是,您可以配置Middleman使用slim,然后任意嵌套部分(或布局)。如果遇到障碍,请检查。不过这很简单


Middleman文档解释了如何使用partials,您可以看到真实示例的外观。

Slim包含
Include
插件,允许在编译时将其他文件直接包含在模板文件中:

require 'slim/include'

include partial_name
文档可在以下位置获取:

如果需要在运行时包含这些文件


Slim::Template.new(“#{name}.Slim”).render
完成任务()。

此线程帮助我编写了一个真正杀手级的partials助手,为您提供了类似Rails的partials功能。我真的很满意

#partials_helper.rb
module PartialsHelper
  def partial(name, path: '/partials', locals: {})
    Slim::Template.new("#{settings.views}#{path}/#{name}.slim").render(self, locals)
  end
end
-

-

我最初只有
.render({},locals)
,这意味着partials无法访问
其他helpermethods
中包含的任何helper方法(但是
home.slim
有)。将
self
传递到
.render
作为第一个参数,可以解决这个问题(如果您对此感到好奇,请查阅
Tilt::Template\render
文档)

有了这个partialHelper,传递局部变量是可选的,正如为部分指定不同的路径一样(相对于
设置.视图


希望你能像我一样充分利用它!

你能详细说明这个答案吗?我也在尝试这样做。假设文件名为index.slim,我想在其中包含部分变量.slim。谢谢!只要输入你的slim文件
slim::Template.new(''u variables.slim',可选选项\u hash)。render(scope)
关于这件事,我没什么可说的了,“部分”东西只在Rails中可用,而不是仅在Slim中。如果你使用Rails,你只需要
渲染“变量”
谢谢。太糟糕了,它只在Rails中工作。我使用Codekit将Slim模板编译成静态html,但如果没有该功能,它将毫无用处。我将使用Jade。你可以使用Slim::T轻松模拟Slim中的部分功能emplate代码。非常感谢,这看起来很有趣,我最终使用了Grunt和angularjs,删除了
渲染
部分
的要求。但是,对于没有angular的网站,这很好,我现在正在检查。整个目的是将slim用于静态网站,您正在sinat中运行帮助程序不过,这是动态的:嗯,我不需要添加“require”。也许,这是因为rails自动为我添加了它
#app.rb
require 'slim'
require 'slim/include'
require 'partials_helper'
require 'other_helper_methods'

class App < Sinatra::Base
  helpers do
    include PartialsHelper
    include OtherHelperMethods
  end

  get '/' do
    slim :home
  end
end
#views/home.slim
== partial :_hello_world, locals: { name: 'Andrew' }
#views/partials/_hello_world.slim
h1 Hello, World! Hello #{name}!