Ruby on rails 缺少参数或值为空:对话
以下是此线程的后续内容: 我有下面一行:Ruby on rails 缺少参数或值为空:对话,ruby-on-rails,parameters,Ruby On Rails,Parameters,以下是此线程的后续内容: 我有下面一行: 但是当我点击按钮时,我得到了错误:参数丢失或值为空:conversation 我可以看到,conversation不在参数散列中:{“authenticity_token”=>“r5pwStXl6NwEgqqq0GT0RQxCqsGHrTVsh4Q7HviX+re5k+XOs2ioRv9kZqvDGz9Ch/6O6D1nOMjscquHQJlB+g=”,“接收方id=>“1”,“发送方id=”>“2”,“控制器”=>“对话”,“操作”=>“创建” 正如在
但是当我点击按钮时,我得到了错误:参数丢失或值为空:conversation
我可以看到,conversation
不在参数散列中:{“authenticity_token”=>“r5pwStXl6NwEgqqq0GT0RQxCqsGHrTVsh4Q7HviX+re5k+XOs2ioRv9kZqvDGz9Ch/6O6D1nOMjscquHQJlB+g=”,“接收方id=>“1”,“发送方id=”>“2”,“控制器”=>“对话”,“操作”=>“创建”
正如在另一个线程中所建议的,将require(:conversation)
添加到控制器是很有帮助的:
class ConversationsController < ApplicationController
before_action :authenticate_user!
# GET /conversations
# GET /conversations.json
def index
@users = User.all
# Restrict to conversations with at least one message and sort by last updated
@conversations = Conversation.joins(:messages).uniq.order('updated_at DESC')
end
# POST /conversations
# POST /conversations.json
def create
if Conversation.between(params[:sender_id], params[:recipient_id]).present?
@conversation = Conversation.between(params[:sender_id], params[:recipient_id]).first
else
@conversation = Conversation.create!(conversation_params)
end
redirect_to conversation_messages_path(@conversation)
end
private
# Use callbacks to share common setup or constraints between actions.
def conversation_params
params.require(:conversation).permit(:sender_id, :recipient_id)
end
end
类会话控制器
这项工作已经进行了一段时间,但由于某种原因,它停止了工作。我该如何解决这个问题?为什么它停止工作了?将“对话”手动添加到哈希中似乎有效:
我还必须修复控制器以考虑嵌套:
def create
if Conversation.between(params[:conversation][:sender_id], params[:conversation][:recipient_id]).present?
@conversation = Conversation.between(params[:conversation][:sender_id], params[:conversation][:recipient_id]).first
else
@conversation = Conversation.create!(conversation_params)
end
redirect_to conversation_messages_path(@conversation)
end