Rails 2.2.2
_competition.html.erb
<p>This is packed</p>
<% pack do %>
// some javascript
<% end %>
competitions_helper.rb
def pack(&block)
yield + 'PACKED'
end
但是'PACKED'没有附加到我的javascript字符串,它就好像pack do
没有效果一样。看起来像块和实际视图渲染的上下文有些奇怪,因为如果我在帮助器中删除了yield的调用并返回一个硬编码字符串,我就得不到pack的输出。
答案 0 :(得分:2)
def pack(&block)
concat(capture(&block) + 'PACKED')
end
答案 1 :(得分:0)
我没有测试它,但你可以试试:
yield << 'PACKED'
这只是组合2个字符串的另一种方式。
答案 2 :(得分:0)
作为一种解决方法,暂时将javascript放在另一个部分并使用render_to_string
将其传递给辅助函数,即。无需致电yield
。
<%= pack(render_to_string :partial => '_competition_javascript') %>