在编写可以从其他助手和视图中使用的打印 javascript 的助手时,我偶然发现了以下问题:
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
这个助手应该被调用javascript { "alert('hurray'); }
。
在第一个替代方案中——我希望它可以工作——Rails javascript_tag 助手呈现一个空<script type="text/javascript"> //<![CDATA[ //]]> </script>
标签。
然而,第二种选择按预期工作。
那里发生了什么事?那怎么可能不同?