【发布时间】:2019-10-10 15:23:49
【问题描述】:
我创建了一个消息系统,一个用户发送消息,另一个用户接收实时更新的消息。它以前可以工作,但现在我出错了,没有任何渲染或刷新。
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
【问题讨论】:
-
这个partial的目的是什么,self.render(partial: 'messages/message', locals: {message: message})
标签: ruby-on-rails ruby actioncable