Почему этот блок не работает на моем шаблоне ERB - PullRequest
0 голосов
/ 13 июня 2018
<%= render layout: "shared/some_template", 
      locals: {
               variable_value: true 
              } do %>
   <%= hidden_field_tag "ids[]", "ng-value": "sth.id" %>
<% end %>

Шаблон в некотором шаблоне имеет некоторый html и вызов yield, куда должно идти «скрытое» поле, но оно не отображает его, оно отображает все остальное внутри шаблона, просто отбрасывает часть hidden_field_tag.

Есть идеи, как мне это решить?это работает на версии HAML, когда я попробовал, но не на ERB, разве это не доступно для ERB?

1 Ответ

0 голосов
/ 13 июня 2018

Вы передаете &block в render, который ничего с этим не делает.

Чтобы передать обратный вызов частичному, создайте lambda и поместите его в локальную переменную:

<%= 
  lamb = lambda{ hidden_field_tag 'ids[]', 'ng-value' => 'sth.id' }
  locals = { variable_value: true, callback: lamb }
  render layout: 'shared/some_template', locals: locals
 %>

Теперь внутри шаблона звоните <%= callback.call %>.

(Заметьте, кстати, что я использовал ' вместо ", потому что мы не используем специальные функции ". И обратите внимание, я ввел локальную переменную locals вместотворчески выравнивая вызов render.

...