これは私の麺をひねります。レールのネストされたブロックヘルパーの出力を抑止できません3
(それが重要ならば、レール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完全に働いた –
これは私をナッツを運転していた...解決に感謝! –
上記の問題を解決したコードを記述できますか? –