Как вы можете напрямую вывести результат помощника, который получает блок в ERB? - PullRequest
1 голос
/ 24 марта 2011

У меня есть помощник, который берет блок:

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 не является решением).

1 Ответ

0 голосов
/ 24 марта 2011

Вместо того, чтобы брать кредит на чужую работу, я просто укажу вам здесь.

...