2016-09-07 2 views

答えて

1

利用収率:

# 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 
+0

:Fixnum' –

+1

収率は' block.call' –

+0

どのようにメソッドを呼び出したのと同じですか? –

3

を、あなただけのlink_toに上のブロックを渡したいですか?これを行う。

def button(&block) 
    link_to '/', &block 
end 
+0

'html_safe'が失われました:) – mudasobwa

+0

ああ、それは本当です。この場合、質問は不明です。 :) –

+0

'link_to '/'、& - > {block.call.html_safe}'? – mudasobwa

2

あなたはたぶん混乱している可能性があります。 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>' } 
関連する問題