Присвоение локальных переменных текущему объекту рендера коллекции - PullRequest
0 голосов
/ 10 декабря 2018

Я выполняю рендеринг, выполняя итерацию по коллекции следующим образом:

<%= render partial: 'reply', collection: @replies %>

Я хотел бы назначить локальных в этом вызове рендеринга НО они будут локальными, относящимися кэкземпляр этой итерации.Так, например, если в ответе есть родительская ассоциация с именем post , я бы хотел назначить его таким же образом, как если бы вы передавали опцию locals .К сожалению, это не возможно, насколько мне известно, и я должен явно создать назначение в частичном:

_reply.html.erb

<% post = reply.post %>

<div>
  <%= post.name %>
  ...
</div>

Возможно липередать местным жителям при первом вызове рендеринга?

1 Ответ

0 голосов
/ 10 декабря 2018

в теории это невозможно, так как вы хотите это сделать, у вас есть другие варианты здесь, пусть это будет так, как вы есть сейчас, и внутри вашего reply.html.erb вызовите другой фрагмент с локальной записью.

Вы можете даже изменить свой код для этого, чтобы сделать его короче

<%= render @replies %>

, и он будет искать ваш ответ частично, следуя соглашениям об именах.и внутри этого

<%= render partial: 'post', locals: {post: reply.post} %>

, если эти опции применимы для вашего случая.

или, не визуализируйте его как коллекцию, а сделайте это с each

<% @replies.each do |reply| %>
  <%= render reply, locals {post: reply.post} %>
<% end %>

у вас есть больше вариантов, но тот, который вы ищете, в данный момент невозможен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...