Я создаю систему сообщений, в которой один пользователь отправляет сообщение, а другой получает сообщение с обновлением в реальном времени.Раньше это работало, но теперь я получаю ошибку, и ничего не рендерится и не обновляется.
AbstractController :: DoubleRenderError (Рендеринг и / или перенаправление вызывались несколько раз в этом действии. Обратите внимание, что вы можете вызывать только перенаправление рендеринга ИЛИ и не более одного раза для каждого действия. Также обратите внимание, что ни перенаправление, ни рендеринг не завершаютсявыполнение действия, поэтому, если вы хотите выйти из действия после перенаправления, вам нужно сделать что-то вроде «redirect_to (...) and return».):
здесь - messages_controller.rb
class MessagesController < ApplicationController
before_action :authenticate_user!
before_action :set_conversation
def index
if current_user == @conversation.sender || current_user ==
@conversation.recipient
@other = current_user == @conversation.sender ?
@conversation.recipient : @conversation.sender
@messages = @conversation.messages.order("created_at DESC")
else
redirect_to conversations_path, alert: "You don't have permission to view this."
end
end
def create
@message = @conversation.messages.new(message_params)
@messages = @conversation.messages.order("created_at DESC")
if @message.save
ActionCable.server.broadcast "conversation_#{@conversation.id}", message: render_message(@message)
redirect_to conversation_messages_path(@conversation)
end
end
private
def render_message(message)
self.render(partial: 'messages/message', locals: {message: message})
end
def set_conversation
@conversation = Conversation.find(params[:conversation_id])
end
def message_params
params.require(:message).permit(:context, :user_id)
end
end
Я знаю, что ошибка идет отсюда
if @message.save
ActionCable.server.broadcast "conversation_#{@conversation.id}", message: render_message(@message)
redirect_to conversation_messages_path(@conversation)
end