我已經離開Rails一段時間了,所以也許我錯過了一些簡單的東西。如果內容產生,就會渲染一些東西(Rails 3)
你怎麼能做到這一點:
<%= yield_or :sidebar do %>
some default content
<% end %>
甚至:
<%= yield_or_render :sidebar, 'path/to/default/sidebar' %>
在第一種情況下,我想:
def yield_or(content, &block)
content_for?(content) ? yield(content) : yield
end
但是,拋出一個「不塊給出'錯誤。
在第二種情況:
def yield_or_render(content, template)
content_for?(content) ? yield(content) : render(template)
end
這工作時,有沒有定義的內容,但只要我使用content_for覆蓋默認的內容,它會引發同樣的錯誤。
我用this作爲起點,但它似乎只在直接在視圖中使用時才起作用。
謝謝!
看來,我會使用這種模式很多,所以我想把它提取到一個幫手中。 – Ivan 2010-07-27 21:29:34