У меня есть помощник, который берет блок:
def container(&block)
render(:partial => 'layouts/container', :locals => {:content => capture(&block)})
end
Когда я пытаюсь использовать его внутри тега <%= ... %>
в ERB:
<%= container do %>
Test
<% end %>
Я получаю compile error
:
compile error
test2.html.erb:1: syntax error, unexpected ')'
old_output_buffer = output_buffer;;@output_buffer = ''; __in_erb_template=true ; @output_buffer.concat(( container do ).to_s); @output_buffer.concat "\r\n"
^
test2.html.erb:4: syntax error, unexpected kENSURE, expecting ')'
test2.html.erb:6: syntax error, unexpected kEND, expecting ')'
Однако, если я перехватываю вывод помощника, а затем выводю его:
<% output = container do %>
Test
<% end %>
<%= output %>
работает нормально, но безобразно.
Есть ли способ сделать то, что я хотел бы? (Примечание: обычно я использую HAML, но я пытаюсь заставить своего помощника работать на кого-то еще в команде, которая еще работает в ERB; переход на HAML не является решением).