= form_for(:subject, :url => {:action => "create"}) do |f|
= render :partial => "form", :locals => {:f => f}
#form_buttons= submit_tag "Create Subject"
注意到form_for有一个"do",所以它需要一个"end",但是HAML怎么知道在哪里结束"end"呢?
对不起,我的英语不好,希望你能明白我在说什么!HAML使用缩进来分隔块,与Python语言的方式相同。也许你应该阅读基础教程或维基来获得更多信息。
= form_for(:subject, :url => {:action => "create"}) do |f|
= render :partial => "form", :locals => {:f => f}
#you can use f here
# you can't use f here
HAML在块结构中使用缩进。
更简单地说,当代码实际上"输出"时,它是一个隐含的结束(html标记或ruby do-end块)。那么在html/ruby中
...
loop1
loop2
code_for_loop2
end # of loop2
end # of loop1
...
in haml becomes
...
loop1
loop2
code for loop2
...
注。缩进2个空格,而不是制表符