Rails: рендеринг частичного в цикле приводит к неопределенной переменной - PullRequest
0 голосов
/ 02 октября 2018

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

В моем шоу.html.erb для событий:

           <% @event.attendees.each do |user| %>
            <div class="col-md-4">
              <h4><%= user.first_name %> <%= user.last_name %></h4>

                <% if user.event_items.any?  %>

                <div class="event-item-list">
                  <% user.event_items.each do |eventitem| %>
                  <div class="event-item-div" >

                     <p class="event-item-title"><%= eventitem.item.title %></p>

                  </div>
                  <% end %>
                <% end %>
              </div>

                <% if user == current_user %>
                  <%= render 'event_items/form' %>
                <% end %>

             </div>
            <% end %>

Это работает и показывает заголовок каждого элемента события, добавляемого в список.

Однако, если я хочу переместить содержимое тега P в частичное, я получаю «неопределенную локальную переменную или метод« eventitem »».Это не имеет смысла для меня, поскольку я предполагаю, что все, что передается как частичное в этом цикле, будет обрабатываться так же, как если бы я просто оставил там содержимое P-тега.На данный момент все, что я имею в частичном, будет:

<p class="event-item-title><%= eventitem.item.title %><p>

Любое понимание будет оценено.

1 Ответ

0 голосов
/ 02 октября 2018

Частицы не наследуют локальные переменные автоматически, вы должны определить их.В соответствии с Rails Guides для передачи локальных переменных в частичные вам необходимо установить их в locals хеш

<%= render 'event_items/form', locals: {eventitem: eventitem} %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...