В Rails 2, приводящем к блоку во вспомогательном методе, метод отрисовывает частично? - PullRequest
1 голос
/ 07 октября 2010

Рельсы 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 в помощнике и возвращаю жестко закодированную строку, я не получаю вывод из пакета.

Ответы [ 3 ]

2 голосов
/ 07 октября 2010
def pack(&block)
  concat(capture(&block) + 'PACKED')
end
0 голосов
/ 07 октября 2010

В качестве обходного пути, на данный момент, поместите JavaScript в другой фрагмент и передайте его вспомогательной функции, используя render_to_string, т.е.без необходимости звонить yield работает.

<%= pack(render_to_string :partial => '_competition_javascript') %>
0 голосов
/ 07 октября 2010

Я не проверял, но вы можете попробовать:

yield << 'PACKED'

Это просто другой способ объединения 2 строк.

...