我有一个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)
有关如何做到这一点的任何想法?
好主意?
如何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) 我希望在浏览器中重用我为NodeJS编写的模板,这样我希望获得快速页面加载时间(初始渲染)和动态内容切换能力等...
这在Node上是最自然的,兼容模板引擎的任何想法?
顺便说一下,我喜欢HAML风格的语法,所以基于HAML的任何东西都是一个巨大的优势.
谢谢!罗马
编辑:我认为我最喜欢Mustache的方法,它适用于Express,也适用于客户端..这里将更新实现如何...
我对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-Coffee中做以下事情:
- case msg.type
- when "usertext"
= msg.body
- when "direct"
= msg.content.kbcontent_body
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误"保留字"案例""
我怀疑它实际上并没有被Haml-Coffee支持.
我试图输出一些东西
<p>Hello, this is my text. <a href="#">Link here</a> This is more text</p>
Run Code Online (Sandbox Code Playgroud)
但使用HAML
怎么做?我一直在寻找示例,但没有一个展示如何做到这一点,但链接的任何一侧都有纯文本?
尼尔
我在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,并喜欢它的简洁性和可读性.是否有任何类似的XSLT?特别是,我希望能够更容易区分包含角括号的输出和包含角括号的标记本身.
如果没有专门的XSLT抽象语言,那么至少有一个XML的通用形式吗?
编辑为了好玩,我只是快速测试了使用实际的Haml(实际上是HamlPy)来生成XSLT.我观察到的缺点:
%xsl:foo不够简洁.XLS命名空间的特殊字符,就像#foo会更好.<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]}) 因此,当使用内联块而不是浮动时,我阅读了关于使间距消失的解决方案:显示:内联块额外边距和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) 我刚刚学习了几本haml教程,但我无法弄清楚如何将html文件(直接)包含到haml文档中.例如:
.header
hello
= render :partial => "b.html"
Run Code Online (Sandbox Code Playgroud)
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到我想要的文档中?