在Rails 2中,在一个帮助器中产生一个块,一个方法呈现部分?

时间:2010-10-07 14:17:55

标签: ruby-on-rails ruby erb

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的输出。

3 个答案:

答案 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') %>