从渲染的Rails HAML内外的HAML谐音(Rendering HAML partials fr

2019-07-05 04:35发布

我使用HAML来生成一个网站中的一些静态的HTML页面,而我想通用组件拆分为谐音,我可以包括多个页面,就像在轨道上。 不过,我不希望使用整个Rails堆栈要做到这一点,因为它似乎有点小题大做。

我环顾四周,在互联网上,但没有发现任何东西,不仅仅是做类似更好:

Haml::Engine.new(IO.read("header.haml")).render

难道有内HAML包括所谓的泛音的更好的方式? 现有的过滤器或命令我失踪?

Answer 1:

这是最好的HAML和SASS与建设静态网站的工具结合起来。 下面是一些链接:

  • StaticMatic
  • 服务
  • HAML杰奇 -的叉哲基尔支持HAML。
  • 中间人

我使用杰奇为我的博客,但如果你没有建立一个博客,它可能不适合您的需求。



Answer 2:

该死,你是对的 - 没有一个内置的方式。 我用佣工的haml命令行,但总是那些,其输出已经HTML格式。

我最好的建议是写一个partial()方法和需要它。 它看起来像你已经开始了这条路。 我会建议任何人写这样的功能考虑周围保持原有的结合以某种方式。 HAML ::助手#capture_hame看起来是做到这一点的最简单方法。

如果执行速度是一个问题,这也可能是缓存一些解析模板在同样的方式,Merb的确实是个好主意。

如果有人得到一些代码的工作,请把它挂在GitHub上 ,并作出评论在这里。



Answer 3:

我终于找到了我一直在寻找的,所以我想我会与你分享我的发现。 你可以简单地使用你首先使用HAML相同的语法- http://www.semicomplete.com/blog/geekery/partials-in-haml-in-sinatra.html

/views/file.haml

%h3 Title
%div= haml :content, :layout => false

/views/content.haml

%p your content here


Answer 4:

所有的解决方案似乎是庞大的,我的目的,虽然我试图做的基本上是同样的事情。 这里是一个Ruby脚本,我写的确实少得可怜-评估Haml的用粘在选项= partial "test.haml"任何你喜欢的。 它的逻辑的一个微不足道的金额,试图找到一个部分文件。

require 'haml'

def find filename
  return filename if File.exists? filename
  path = File.dirname ARGV[0]
  filename = path+"/"+filename
  return filename if File.exists? filename
  throw "Could not find file."
end

def partial filename
  source = File.read(find(filename))
  engine = Haml::Engine.new(source)
  engine.render(binding)
end

puts partial ARGV[0]

你执行它,像这样:红宝石hamlize.rb input.haml> output.html



Answer 5:

我有同样的问题。 我需要产生一些HTML代码段来优化服务器响应,一旦这个片段有大量的计算(绘制图)的,每一个用户做了不必要做的所有东西的请求的时间。

一旦我有几个HAML谐音分区的意见,我想重用此生成HTML文件。

我的第一种方法是用Haml的发动机很努力,但一旦我有谐音渲染等谐音和应用助手的某些功能,但它并没有奏效。 终局我发现,通过了创造,我想创建一个HTML文件(to_html)的机型功能的解决方案这是它:

def to_html
  ActionView::Base.send :include, ActionView::Helpers::ApplicationHelper

  File.open(File.join(Rails.root, "public", 'test.html'), "w") do |file|

  file.print ActionView::Base.new(Rails.configuration.paths["app/views"].first).render(
                :partial => 'partial_folder/partial', 
                :format => :html,
                :locals => { :model => self}
              )
  end  
end

这样一来,我就能够使用已经完成的谐音,打印HTML文件。 这个工作对我来说,也许它可以帮你还。



文章来源: Rendering HAML partials from within HAML outside of Rails
标签: ruby haml