У меня есть разговор, частичный с маршрутом, являющимся ресурсами: беседы, но когда я пытаюсь сделать это частичным в своей навигационной панели (чтобы перечислить все их активные разговоры), я получаю неопределенную ошибку метода.Оказание частичных действий в любом месте вашего приложения rails
undefined method `author' for nil:NilClass
Прямо сейчас я делаю <%= render 'conversations/conversation' %>
Есть специальный способ сделать ваши партиалы ВЕЗДЕ на вашем сайте?
EDIT: предоставление кодов
разговоры/_conversation.html.erb
<div>
From <strong><%= conversation.author.email %></strong> to
<strong><%= conversation.receiver.email %> (<%#= conversation.receiver.online? ? 'online' : 'offline' %>)</strong>
<br>
<%= link_to 'View conversation', conversation_path(conversation) %>
<hr>
</div>
макеты/_navigation.html.erb
<%= render 'conversations/conversation' %>
маршруты
#Chat
resources :conversations
resources :personal_messages
resources :users
mount ActionCable.server => '/cable'
EDIT2:
conversations_controller.rb
class ConversationsController < ApplicationController
before_action :set_conversation
before_action :check_participating!, except: [:index]
def index
@conversations = Conversation.participating(current_user).order('updated_at DESC')
respond_to do |format|
format.html
format.js
end
end
def show
@personal_message = PersonalMessage.new
@conversations = Conversation.participating(current_user)
end
private
def set_conversation
@conversation = Conversation.find_by(id: params[:id])
end
def check_participating!
redirect_to root_path unless @conversation && @conversation.participates?(current_user)
end
end
ApplicationController
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_action :authenticate_user!
end
Вы могли бы указать код? –
какой метод это говорит не определено? – Bek
сделать частичным: «разговор/разговор», местные жители: {разговор: разговор}? – Mingsheng