Gem почтового ящика, "неопределенный метод" участники "для nil:NilClass"

@conversation не загружает реальный разговор. Я получаю ошибку nilClass при загрузке отдельного разговора, и я не знаю почему. Я чувствую, что упускаю что-то глупое.

Вот ошибка (которая сохраняется при любом использовании разговора в представлении шоу):

undefined method `participants' for nil:NilClass

Extracted source (around line #1):

<% conversation.participants.each do |participant| %>
  <% unless participant == current_user %>
    <%= gravatar_for participant %>
  <% end %>
<% end %>

Rails.root: /home/alex/workspace/meetexplore_app

Application Trace | Framework Trace | Full Trace
app/views/conversations/_participants.html.erb:1:in     `_app_views_conversations__participants_html_erb___865731980245228929_7035    9899418680'
app/views/conversations/show.html.erb:4:in    `_app_views_conversations_show_html_erb__775537665966091139_41963900'

Мои разговоры / файл show.html.erb:

    <% page_header "Conversation" %>
    <p>Chatting with
      <%= render 'conversations/participants', conversation: @conversation %>    
    </p>

    <div class="panel panel-default">
      <div class="panel-heading"><%= @conversation.subject %></div>

      <div class="panel-body">
        <div class="messages">
          <% @conversation.receipts_for(current_user).each do |receipt| %>
            <div class="media">
              <% message = receipt.message %>
              <div class="media-left">
                <%= gravatar_for message.sender, 45, message.sender.name %>
              </div>

          <div class="media-body">
            <h6 class="media-heading"><%= message.sender.name %>
              says at <%= message.created_at.strftime("%-d %B %Y, %H:%M:%S") %></h6>
            <%= message.body %>
          </div>
        </div>
      <% end %>
    </div>
  </div>
</div>`

Мой _participants.html.erb частичный:

    <% conversation.participants.each do |participant| %>
  <% unless participant == current_user %>
    <%= gravatar_for participant %>
  <% end %>
<% end %>

И все же этот индекс работает:

<% page_header "Your Conversations" %>
 <p><%= link_to 'Start conversation', new_message_path, class: 'btn btn-lg btn-primary' %></p>

<ul class="list-group">
  <%= render partial: 'conversations/conversation', collection: @conversations %>
</ul>

<%= will_paginate %>

_conversation.html.erb part:

<li class="list-group-item clearfix">
  <%= link_to conversation.subject, conversation_path(conversation) %>

  <p><%= render 'conversations/participants', conversation: conversation %></p>

    <p><%= conversation.last_message.body %>
      <small>(<span class="text-muted"><%= conversation.last_message.created_at.strftime("%-d %B %Y, %H:%M:%S") %></span>)</small></p>

</li>

1 ответ

Так что мне не хватало before_action и функции get_conversation, чтобы фактически найти диалог с правильным идентификатором... woops!

Другие вопросы по тегам