2014-02-12 49 views
1

我對Ruby中的yield和Rails中的yield(特別是views/templates中)是否是相同的實體感到困惑,或者它們是兩種不同的行爲,它們根據上下文。Rails產量與Ruby產量的比較

當我想在Ruby中約yield,這種用法想到:

def some_method 
    yield 123 
end 

some_method { |a| a + 1 } # => 124 

當使用Rails的ERB模板,不過,yield用於呈現特定電流控制器/動作或意見呈現通過providecontent_for指定的內容。

這是一樣的yield,還是Rails版本碰巧是不同的功能與同名?

回答

4

這是一回事。一個塊被傳遞給佈局方法,該方法在被調用時將呈現文檔主體。

yield實際上是Ruby中的關鍵字。可以定義一個名爲「yield」的方法(例如Enumerator這樣做),但是無論何時看到yield沒有接收器,它總是將控制權交給塊的相同關鍵字。

+0

所以傳遞給佈局方法的塊是查看它接收到的參數的塊,並且如果它是提供的東西的名稱,則表明它,否則它呈現與該操作相對應的視圖? –

+1

@ GabrieleCirulli:是的,這基本上就是我理解的。 – Chuck