2011-04-24 42 views
2
= form_for(:subject, :url => {:action => "create"}) do |f| 
    = render :partial => "form", :locals => {:f => f} 
    #form_buttons= submit_tag "Create Subject" 

注意到form_for有一個「do」,所以它需要一個「結束」,但HAML如何知道在哪裏結束「結束」?HAML如何識別塊的結尾?

對不起,我的英文,希望你能理解我在說什麼!

回答

3

HAML使用縮進以Python語言相同的方式分隔塊。也許你應該閱讀基本的tutorialWIKI瞭解更多信息。

= 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 
+0

以前從未學過Python,但我認爲這是寫HAML而不是使用ERB的神話般的方式。 – Hugh 2011-04-24 13:02:46

+0

,這很棒,HAML具有縮進功能,如Python – Hugh 2011-04-24 13:03:50

+0

我更新了我的答案。你可能是指如何編寫HTML而不是使用ERB。 :) – retro 2011-04-24 13:04:00

1

HAML在塊結構中使用縮進。
更簡單的說,當代碼實際上是'outdents'時,它是一個隱含的結束(無論是對於html標籤還是ruby do-end塊)。 那麼在HTML /紅寶石將是

... 
loop1 
    loop2 
    code_for_loop2 
    end # of loop2 
end # of loop1 
... 

in haml becomes 
... 
loop1 
    loop2 
    code for loop2 
... 

p.s.還縮進2,空格不是製表符。