标签: haml

使用Rails查看助手与Haml :: Engine

我有一个Rails应用程序,我在其中呈现存储在模型属性中的一块Haml内容.在Haml的那个块中使用Rails视图助手会很不错.目前,我在视图助手中使用Haml :: Engine#render来呈现此模型属性的内容.它工作得很好,但我不能使用像= link_to这样的东西.为了说明问题:

irb(main):003:0> haml_text=<<"EOH"
irb(main):004:0" %p
irb(main):005:0"   =image_tag 'someimage'
irb(main):006:0" EOH
=> "%p\n  =image_tag 'someimage'\n"
irb(main):007:0> engine = Haml::Engine.new(haml_text)
=> #<Haml::Engine:0x7fa9ff7f1150 ... >
irb(main):008:0> engine.render
NoMethodError: undefined method `image_tag' for #<Object:0x7fa9ff7e9a40>
        from (haml):2:in `render'
        from /usr/lib/ruby/gems/1.8/gems/haml-3.0.25/lib/haml/engine.rb:178:in `render'
        from /usr/lib/ruby/gems/1.8/gems/haml-3.0.25/lib/haml/engine.rb:178:in `instance_eval'
        from /usr/lib/ruby/gems/1.8/gems/haml-3.0.25/lib/haml/engine.rb:178:in `render'
        from (irb):8
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何想法?

好主意?

haml ruby-on-rails

7
推荐指数
1
解决办法
2276
查看次数

在Haml过滤器中包含变量的内容

如何article.content过滤:纺织?

 - @articles.each do |article|
    %article.post
      %header=article.name
      %p
        :textile 
          =article.content
      %footer
Run Code Online (Sandbox Code Playgroud)

输出

<article class="post">
    <header>game</header>
    <p>
      </p><p>=article.content</p>
    <p></p>
    <footer></footer>
  </article>
Run Code Online (Sandbox Code Playgroud)

haml ruby-on-rails

7
推荐指数
1
解决办法
1715
查看次数

浏览器兼容的NodeJS模板

我希望在浏览器中重用我为NodeJS编写的模板,这样我希望获得快速页面加载时间(初始渲染)和动态内容切换能力等...

这在Node上是最自然的,兼容模板引擎的任何想法?

顺便说一下,我喜欢HAML风格的语法,所以基于HAML的任何东西都是一个巨大的优势.

谢谢!罗马

编辑:我认为我最喜欢Mustache的方法,它适用于Express,也适用于客户端..这里将更新实现如何...

haml node.js

7
推荐指数
2
解决办法
3305
查看次数

这是使用Haml显示/连接文本的正确方法吗?

我对Ruby on Rails很新,甚至比Haml更新,我2小时前开始使用它.所以我遵循Ruby on Rails教程并决定在视图上使用Haml,但我不确定这是否是显示事物的正确方法(感觉有点奇怪).有人可以开导我吗?:)

%h1= "About Us"
%p
  =link_to 'Ruby on Rails Tutorial','http://railstutorial.org' 
  &= 'is a project to make a book and screencasts to teach web development with'
  &= link_to 'Ruby on Rails', 'http://rubyonrails.org'
  &= '. This is the sample application for the tutorial.'
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

:ruby
   first_link = link_to 'Ruby on Rails Tutorial','http://railstutorial.org' 
   second_link = link_to 'Ruby on Rails', 'http://rubyonrails.org'

%h1= "About Us"
%p
  = first_link
  &= 'is a project to make a book and screencasts to teach web …
Run Code Online (Sandbox Code Playgroud)

haml ruby-on-rails-3

7
推荐指数
1
解决办法
5941
查看次数

Haml-Coffee有案例陈述吗?

我想在Haml-Coffee中做以下事情:

- case msg.type
- when "usertext"
    = msg.body          
- when "direct"
    = msg.content.kbcontent_body
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误"保留字"案例""

我怀疑它实际上并没有被Haml-Coffee支持.

haml coffeescript

7
推荐指数
2
解决办法
6075
查看次数

内联HAML链接,但内容

我试图输出一些东西

<p>Hello, this is my text. <a href="#">Link here</a> This is more text</p>
Run Code Online (Sandbox Code Playgroud)

但使用HAML

怎么做?我一直在寻找示例,但没有一个展示如何做到这一点,但链接的任何一侧都有纯文本?

尼尔

haml views ruby-on-rails

7
推荐指数
1
解决办法
1万
查看次数

如何在Sinatra中使用Haml partials的本地(或每个视图)变量?

我在Sinatra有一个Haml部分处理我所有的'页面打开'项目,如元标记.

我希望在此部分中为page_title设置变量,然后在每个视图中设置该变量.

部分内容如下:

%title @page_title
Run Code Online (Sandbox Code Playgroud)

然后在视图中,允许执行以下操作:

@page_title = "This is the page title, BOOM!"
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多问题/帖子等等,但我不知道如何要求解决我想要做的事情.我来自Rails,我们的开发人员通常使用content_for,但他们设置了所有这些.我真的想知道它是如何工作的.似乎我必须定义它并使用:本地人以某种方式,但我还没弄明白.提前感谢您的任何提示!

haml scope sinatra

7
推荐指数
1
解决办法
3662
查看次数

HTML是HAML,因为XSLT是......?

我刚刚发现了HAML,并喜欢它的简洁性和可读性.是否有任何类似的XSLT?特别是,我希望能够更容易区分包含角括号的输出和包含角括号的标记本身.

如果没有专门的XSLT抽象语言,那么至少有一个XML的通用形式吗?

编辑为了好玩,我只是快速测试了使用实际的Haml(实际上是HamlPy)来生成XSLT.我观察到的缺点:

  • 不支持带连字符的元素名称(至少在HamlPy中)
  • %xsl:foo不够简洁.XLS命名空间的特殊字符,就像#foo会更好.
  • 特定于HTML的规则会妨碍(在我的情况下,特殊的自我关闭标记规则<meta>是一个问题)
  • %xsl:attribute(name="foo" value="blah")仍然太冗长了.类似的东西.foo="blah"会更好.
  • 某些属性select非常常见,可以隐含:#value-of"./a[@href]"
  • 像功能-=处理逻辑是不需要的,那么可以重新用于类似的XQuery或XPath.或者也许{foo}可以是速记<xsl:value-of select="foo"/>.那很酷:%p(style={../[@style]})

xml xslt formatting haml file-conversion

7
推荐指数
1
解决办法
329
查看次数

使用具有内联块间隔间隙的Haml

因此,当使用内联块而不是浮动时,我阅读了关于使间距消失的解决方案:显示:内联块额外边距http://css-tricks.com/fighting-the-space-between-inline-block - 元素/.

因此,如果您正在使用haml并希望将结束标记放在与下一个开始标记相同的行上,那么除了切换到ERB之外还有解决方案吗?

(不,我不想弄乱父容器的css属性,并且必须在所有子元素中覆盖它).

这打破了(锚之间有间距).

因此,尽管建议使用内联块而不是浮点数来进行此类布局,但似乎浮动仍然是要走的路,特别是在使用haml时?

CSS

nav a {
  display: inline-block;
  padding: 5px;
  background: red;
}
Run Code Online (Sandbox Code Playgroud)

HTML

<nav>
  <a href="#">One</a>
  <a href="#">Two</a>
  <a href="#">Three</a>
</nav>
Run Code Online (Sandbox Code Playgroud)

解决方法(css-tricks one):

<ul>
  <li>
   one</li><li>
   two</li><li>
   three</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

要么

<ul>
  <li>one</li
  ><li>two</li
  ><li>three</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

另一个:

<ul>
  <li>one</li><!--
  --><li>two</li><!--
  --><li>three</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

css haml css-float

7
推荐指数
1
解决办法
1717
查看次数

包含来自haml的html

我刚刚学习了几本haml教程,但我无法弄清楚如何将html文件(直接)包含到haml文档中.例如:

a.haml

.header
    hello
    = render :partial => "b.html"
Run Code Online (Sandbox Code Playgroud)

b.html

world
Run Code Online (Sandbox Code Playgroud)

预期产量:

<div class='header'>
  hello
  world
</div>
Run Code Online (Sandbox Code Playgroud)

我也试过= render "b.html"了.我得到一个错误

haml a.haml --trace

test.haml:8:in `block in render': undefined method `render' for #<Object:0x000000018b2508> (NoMethodError)
    from /usr/lib/ruby/vendor_ruby/haml/engine.rb:129:in `eval'
    from /usr/lib/ruby/vendor_ruby/haml/engine.rb:129:in `render'
    from /usr/lib/ruby/vendor_ruby/haml/exec.rb:313:in `process_result'
    from /usr/lib/ruby/vendor_ruby/haml/exec.rb:43:in `parse'
    from /usr/lib/ruby/vendor_ruby/haml/exec.rb:23:in `parse!'
    from /usr/bin/haml:9:in `<main>'
Run Code Online (Sandbox Code Playgroud)

听起来我需要包含一个库来使用"渲染"或安装库.如何将未格式化的文本转储b.html到我想要的文档中?

html haml

7
推荐指数
1
解决办法
6366
查看次数