ブロックをメソッドに渡すにはどうすればよいですか?たとえば:ブロックを使用してメソッドにhtmlを渡す
# in helper file
def button(&block)
link_to '/' do
block.call.html_safe
end
end
# in the view
button {'<div>html content</div>'}
ブロックをメソッドに渡すにはどうすればよいですか?たとえば:ブロックを使用してメソッドにhtmlを渡す
# in helper file
def button(&block)
link_to '/' do
block.call.html_safe
end
end
# in the view
button {'<div>html content</div>'}
利用収率:
# in the view
button(link) do
'<div>html content</div>'
end
def button(&block)
block
end
私が働いている次のコードを持っているので、
def new_button(link)
link_to link do
yield.html_safe if block_given?
end
end
あなたはたぶん混乱している可能性があります。 1は、ブロックから値を得、それに何かをして、さらに1つのかもしれないが、それを渡したい場合
def button html
link_to '/', html.html_safe
end
button '<div>html content</div>'
:あなたが達成しようとしていることは、昔ながらの良い方法パラメータで、任意のyield
魔法なしで容易に達成可能です:私は1のため、エラー `未定義のメソッド「html_safe」を取得しています
def button
raise unless block_given?
λ = Proc.new
link_to '/', &-> { λ.call.html_safe }
end
button { '<div>html content</div>' }
:Fixnum' –
収率は' block.call' –
どのようにメソッドを呼び出したのと同じですか? –