Rails:在循环中渲染局部变量会导致未定义的变量

时间:2018-10-02 20:02:58

标签: ruby-on-rails

我在尝试在循环中渲染部分内容时遇到麻烦。本质上,我有一个用于创建事件,人们参加事件的应用程序,对于每个事件,与会者都有他们要携带的项目列表,他们可以从自己的项目清单中进行选择。

在我的show.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 :(得分:3)

部分不会自动继承局部变量,必须定义它们。根据{{​​3}},要将局部变量传递给局部变量,您需要在locals哈希中设置它们

<%= render 'event_items/form', locals: {eventitem: eventitem} %>