Wenn zum Drucken von Javascript einen Helfer zu schreiben, die sowohl von anderen Helfern und Ansichten verwendet werden können, stieß ich auf das folgende Problem:Mysterious Ruby-Block-Verhalten: & Block gegen {block.call}
def javascript(print_tag = false, &block)
content_for(:javascript) do
if print_tag
javascript_tag(&block) # does not work
javascript_tag { block.call } # does work
else
capture(&block)
end
end
end
Dieser Helfer sollte mit javascript { "alert('hurray'); }
aufgerufen werden.
In der ersten Alternative - die ich erwartete zu arbeiten - die Rails javascript_tag helper rendert eine leere <script type="text/javascript"> //<![CDATA[ //]]> </script>
-Tag.
Die zweite Alternative funktioniert jedoch wie erwartet.
Was ist dort los? Wie kann das anders sein?
Ough ... was für eine knifflige Umsetzung! Eigentlich benutze ich Haml: '- javascript (true) {fire_flash} wenn flash_message.present?' Und ich möchte das nicht in 4 Zeilen schreiben, wenn es in 1 Zeile gut ist. Aber, vielen Dank! – crispy