document.write('
- @thumbs.each_with_index do |attachment,index|
<div><a href="#..."><img src="#..." /></a></div>
');
上面的代码输出如下内容:
document.write('
<div class="item" style="padding:20;float:left;"><div class="item" style="padding:20;float:left;">
');
有没有办法可以完成相同但没有HAML创建的断裂线?我需要做到这样的事情:
document.write('<div class="item" style="padding:20;float:left;"><div class="item" style="padding:20;float:left;">');
答案 0 :(得分:2)
创建并使用one_line
块助手
def one_line(&block)
haml_concat capture_haml(&block).gsub("\n", '').gsub('\\n', "\n")
end
- one_line do
document.write('
- @thumbs.each_with_index do |attachment,index|
<div><a href="#..."><img src="#..." /></a></div>
');
答案 1 :(得分:1)
您可以使用> and <
例如:
%ul<
- 1.upto(5) do |i|
%li> asdf
将输出一行列表。
在你的情况下:
document.write('
- 1.upto(5) do |i|
%div>
%a{ :href => "#..." }>
%img{ :src => "#..." }>
);
答案 2 :(得分:1)
在模板中使用字符串插值来内联Ruby代码:
document.write('#{@thumbs.map.with_index{ |a,i| '<div>...</div>' }.join}');
例如:
require 'haml'
template = IO.read('tmp.haml')
puts template
#=> document.write('#{ @a.map.with_index{ |n,i| "<div>#{n}-#{i}</div>" }.join }')
@a = %w[a b c]
puts Haml::Engine.new(template).render(self)
#=> document.write('<div>a-0</div><div>b-1</div><div>c-2</div>')