Ruby on rails 参数数目错误(0表示3..6)
我正在使用mailboxer gem,我希望将问题发送到用户收件箱,以便他们可以查看和回答问题 我收到一个参数错误Ruby on rails 参数数目错误(0表示3..6),ruby-on-rails,Ruby On Rails,我正在使用mailboxer gem,我希望将问题发送到用户收件箱,以便他们可以查看和回答问题 我收到一个参数错误参数数量错误(0代表3..6)。它指向行@message=current\u user.send\u message.new(:subject=>“您有一个来自{@question.sender\u id}”的问题, 我试图使用send message实例,因为原始代码行@message=current_user.messages.new(:subject=>“您有来自{@quest
参数数量错误(0代表3..6)
。它指向行@message=current\u user.send\u message.new(:subject=>“您有一个来自{@question.sender\u id}”的问题,
我试图使用send message实例,因为原始代码行@message=current_user.messages.new(:subject=>“您有来自{@question.sender_id}的问题”
会将问题提交到通知表,但不会连接到对话表
问题:
def create
@question = Question.new(params[:question])
if @question.save
#Original code @message = Message.create
@message = current_user.send_message.new(:subject => "You have a question from #{@question.sender_id}",
#Original code :sender_id
:notification_id => @question.sender_id,
#Original code :recipient_id
:receiver_id => @question.recipient_id,
:body => @question.question)
@question.message = @message
@question.save
redirect_to questions_path, notice: 'Your question was saved successfully. Thanks!'
else
render :new, alert: 'Sorry. There was a problem saving your question.'
end
end
您收到错误是因为
send_message
方法(由mailboxer gem提供)需要3..6个参数,而您没有向其发送任何参数
另外,查看您的代码,您似乎正在尝试保存问题的消息
记录。因此,您的@消息
应设置为:
@message = current_user.message.new(:subject => "You have a question from #{@question.sender_id}",
#Original code :sender_id
:notification_id => @question.sender_id,
#Original code :recipient_id
:receiver_id => @question.recipient_id,
:body => @question.question)
@question.message = @message
@question.save
注意我使用了当前用户.message.new
而不是当前用户.send\u message.new
编辑
要使用send_message
,您至少需要传递3个参数:
send_message(recipient, "Body", "subject")
其中,recipient
是接收邮件的人
我不知道为什么要在发送消息
之后链接新建
方法(通常调用它来创建类的新实例
)
您可以按如下方式调用send_message
:
@message = current_user.send_message(@question.recipient_id, @question.question, "You have a question from #{@question.sender_id}")
我们可以看到
send_message
方法的实现吗?send_message
仅在问题控制器的创建操作中。另一个位置在消息控制器中,用于创建操作当前用户。send_message(@recipient,params[:body],params[:subject])
。就是这样,在您的评论中,您使用了3个参数作为send\u message
方法,但在创建方法中,您使用了当前用户。send\u message。new
(使用带有0参数的send\u message,而不是3..6)好的,我明白了。我想我一开始是用主题
,通知id
,接收id
,和正文
。我会做一些更改,看看进展如何。谢谢。我必须使用发送消息
方法,否则它不会创建所需的对话id
连接到对话表。您所做的更改是我以前所做的,这就是为什么我切换到另一个方法,因为它没有完成我需要的。我还没有尝试过代码,但我看不出这将如何工作,因为我需要指定主体和主题。您只需要在没有sp的情况下使用变量指定它们的用途。因此,我认为它不会使用您的更改连接到通知表。除非我完全理解错了。只是尝试了代码,但不幸的是,正如预期的那样,它不起作用。未定义的方法
Fixnum的主键:Class。它不会创建阻止它运行的
消息id`提交到通知表。我在发送消息
之后使用新建
方法的另一个原因是,我最初必须在将问题发送到通知表之前使用该方法,行为@message=current\u user.messages.new
。因此我认为我应该保留新方法,因为它有效d以前。