Ruby on Rails中Mailboxer的Messages#create中的ArgumentError

时间:2019-04-27 23:10:23

标签: ruby-on-rails ruby messaging mailboxer argument-error

我遵循了有关在a Ruby on Rails web application中实现邮箱管理器的本网站教程。

现在我遇到此错误:

ArgumentError in Messages#create
Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

这是我的messages_controller.rb

    class MessagesController < ApplicationController

      def new
        @chosen_recipient = User.find_by(id: params[:to].to_i) if params[:to]
      end

      def create
        recipients = User.where(id: params['recipients'])
        conversation = current_user.send_message(recipients, params[:message] 
        [:body], params[:message][:subject]).conversation
        flash[:success] = "Message has been sent!"
        redirect_to conversation_path(conversation)
      end

    end

当我完全按照本教程学习时,我不确定这是怎么回事。

错误行特别是第9行“对话= current_user.send_message ......”

我相信我必须在某个地方定义@recipients,但是本教程未指定。

我尝试过@recipients和@conversations,只会导致另一个我不熟悉的错误(仅供参考)。

所有代码都在教程中,并且也链接在顶部。

可以克隆at this link(使用AWS Cloud9)并创建用户,然后尝试向其他用户发送消息,然后单击以将消息发送给收件人,您将收到错误消息。

我试图做前面列出的建议,并尝试了@ing一些变量,但是没有用。

1 个答案:

答案 0 :(得分:0)

您需要告诉Rails电子邮件服务器在每个应用程序环境文件中的位置。像这样:

config.action_mailer.default_url_options = { :host => "www.yourhost.com" }

此外,在此处发布问题之前,您应尝试在Google上搜索错误消息。 This was the first result代表Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true