Hi:
How do I embed Ruby code in Haml? I am passing an array via a get
request. The array can be displayed using
%p #{@ary}
However, if I try…
for x in 0…#{@ary.length}
print #{@ary.at(x)}
end
I get an error, undefined variable x. What is going on?
cz
czczcz
2
On 17/02/11 12:06, cz wrote:
end
I get an error, undefined variable x. What is going on?
cz
You need ‘-’ at the start of a line with ruby code otherwise haml just
passes it through Also indentation is important.
- for x in [email protected]
#{@ary.at(x)}
e.g.
% (echo ‘- for x in 0…5’ ; echo ’ #{x}’) | haml
1
2
3
4
5
you don’t need the ‘end’ that you do in normal ruby as the indentation
defines the block (much like in python).
czczcz
3
James Brister wrote in post #982179:
You need ‘-’ at the start of a line with ruby code otherwise haml just
passes it through Also indentation is important.
- for x in [email protected]
#{@ary.at(x)}
I think it’s clearer to use regular HAML insertion inside the block,
instead of ruby string expansion:
- for x in [email protected]
= @ary.at(x)
And of course, “each” is better here.
- @ary.each do |elem|
= elem
Standalone example, showing some nested tags:
$ haml <<EOS
-
@ary = [1,4,9,16]
-
@ary.each do |elem|
%tr
%td= elem
EOS
Output:
1 |
4 |
9 |
16 |