Ruby on rails 在Rails 2中,生成辅助对象中的块时,方法会渲染部分?

Ruby on rails 在Rails 2中,生成辅助对象中的块时,方法会渲染部分?,ruby-on-rails,ruby,erb,Ruby On Rails,Ruby,Erb,轨道2.2.2 _competition.html.erb <p>This is packed</p> <% pack do %> // some javascript <% end %> 然而,“PACKED”并没有附加到我的javascript字符串中,它就好像packdo没有效果一样。块的上下文和实际的视图渲染似乎有些奇怪,因为如果我在助手中删除对yield的调用并返回硬编码字符串,我就不会从pack中得到任何输出。我没有测试它,但您可以尝

轨道2.2.2

_competition.html.erb

<p>This is packed</p>
<% pack do %>
// some javascript
<% end %>

然而,“PACKED”并没有附加到我的javascript字符串中,它就好像
packdo
没有效果一样。块的上下文和实际的视图渲染似乎有些奇怪,因为如果我在助手中删除对yield的调用并返回硬编码字符串,我就不会从pack中得到任何输出。

我没有测试它,但您可以尝试:

yield << 'PACKED'

yield作为一种解决方法,目前,将javascript放入另一个部分,并使用
render\u to\u string
将其传递给助手函数,即无需调用
yield
即可

<%= pack(render_to_string :partial => '_competition_javascript') %>
“\u competition\u javascript”)%%>

谢谢,但问题不在于字符串的连接方式。如果我不让步,只返回一个字符串,它将按预期工作。调用yield似乎会重新呈现partial(调用helper)。
<%= pack(render_to_string :partial => '_competition_javascript') %>
def pack(&block)
  concat(capture(&block) + 'PACKED')
end