1
這是一種扭曲我的麪條。無法在導軌中禁止嵌套塊幫助器中的輸出3
我有類似的東西這(在Rails 3引擎,如果該事項)
class Builder
def initialize
@foos = []
end
def foo(&block)
@foos << helper.capture(&block) #helper being a class that is including ActionView::Helpers
end
def to_html
@foos.join "\n"
end
end
module ApplicationHelper
def widget
b = Builder.new
yield b
b.to_html
end
end
#in a view somewhere
<%= widget do |b| %>
<% b.foo do %>
static content
<% end %>
<% end %>
一切工作出很大的,但嵌套的靜態內容越來越輸出兩次 - 一次,我想它,一次在widget
被調用。
從我讀到的,capture
應該處理這個確切的問題。我很確定問題源於我如何調用捕獲(來自包含ActionView::Helpers
的虛擬代理類),但問題在於b.foo
調用正在調用類實例的方法,而不是從將要混合的東西的上下文進入模板。
有沒有辦法解決這個問題?還是我從錯誤的方向接近這一點。我試圖模擬一些相當複雜的事情,並且對api非常滿意,似乎無法通過這個問題。
這是一個絕妙的主意:D完美的工作 – 2010-12-04 06:12:18