日志中的 Heroku "重定向到"与它实际重定向到的 URL 不匹配



我刚刚将我的ruby应用程序部署到了我的contacts_controller.rb中的heroku和redirect_to不再可行。如果我运行本地服务器,它可以正常工作,但是在Heroku上,它将我进入不存在的URL,因此我会收到错误消息。

我已经看过Heroku日志,甚至在那里,它说它正在重定向到正确的URL,但这与应用程序中的功能不符。

我尝试重新启动Heroku。我已经搜索了文档,以查看是否有一种手动更改路径的方法现在认为这是指DB,而不是重定向URL。

奇怪的是redirect_to路径在我的if/else方法中的成功或失败是相同的,并且对失败效果很好,但不是成功。

contacts_controller.rb文件:

class ContactsController < ApplicationController
  def new
    @contact = Contact.new
  end
  def create
    @contact = Contact.new(contact_params)
      if @contact.save
        redirect_to new_contact_path
        name = params[:contact][:name]
        email = params[:contact][:email]
        body = params[:contact][:comments]
        ContactMailer.contact_email(name, email, body).deliver
        flash[:success] = "Message sent."
      else 
        flash[:danger] = @contact.errors.full_messages.join(", ")
        redirect_to new_contact_path
      end
  end    
  private
    def contact_params
      params.require(:contact).permit(:name, :email, :comments)
    end
end

我提交了联系表格后,这是Heroku日志:

2017-03-02T12:15:00.498443+00:00 app[web.1]: I, [2017-03-02T12:15:00.498389 #4]  INFO -- : [] Redirected to https://myapp.herokuapp.com/contact-us
2017-03-02T12:15:00.506175+00:00 app[web.1]: I, [2017-03-02T12:15:00.506104 #4]  INFO -- : []   Rendering contact_mailer/contact_email.html.erb
2017-03-02T12:15:00.506925+00:00 app[web.1]: I, [2017-03-02T12:15:00.506848 #4]  INFO -- : []   Rendered contact_mailer/contact_email.html.erb (0.6ms)
2017-03-02T12:15:00.793142+00:00 app[web.1]: I, [2017-03-02T12:15:00.793082 #4]  INFO -- : [] Sent mail to xxxxxxxx@xxxx.xxx (6.6ms)
2017-03-02T12:15:00.786369+00:00 app[web.1]: D, [2017-03-02T12:15:00.786255 #4] DEBUG -- : [] ContactMailer#contact_email: processed outbound mail in 286.1ms
2017-03-02T12:15:00.793195+00:00 app[web.1]: D, [2017-03-02T12:15:00.793141 #4] DEBUG -- : [] Date: Thu, 02 Mar 2017 12:15:00 +0000
2017-03-02T12:15:00.793197+00:00 app[web.1]: From: is
2017-03-02T12:15:00.793197+00:00 app[web.1]: To: xxxxx@xxx.xxx
2017-03-02T12:15:00.793198+00:00 app[web.1]: Message-ID: <xxxx.mail>
2017-03-02T12:15:00.793199+00:00 app[web.1]: Subject: Contact Form Message
2017-03-02T12:15:00.793200+00:00 app[web.1]: Mime-Version: 1.0
2017-03-02T12:15:00.793200+00:00 app[web.1]: Content-Type: text/html;
2017-03-02T12:15:00.793201+00:00 app[web.1]:  charset=UTF-8
2017-03-02T12:15:00.793201+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2017-03-02T12:15:00.793202+00:00 app[web.1]: <!DOCTYPE html>
2017-03-02T12:15:00.793202+00:00 app[web.1]: 
2017-03-02T12:15:00.793203+00:00 app[web.1]: <html>
2017-03-02T12:15:00.793204+00:00 app[web.1]:   <head></head>
2017-03-02T12:15:00.793204+00:00 app[web.1]:   <body>
2017-03-02T12:15:00.793205+00:00 app[web.1]:     <p>You have received a message from the site's contact form, from 
2017-03-02T12:15:00.793206+00:00 app[web.1]:     this, is.</p>
2017-03-02T12:15:00.793207+00:00 app[web.1]:     <p>frustrating</p>
2017-03-02T12:15:00.793208+00:00 app[web.1]:   </body>
2017-03-02T12:15:00.793208+00:00 app[web.1]: </html>
2017-03-02T12:15:00.793409+00:00 app[web.1]: I, [2017-03-02T12:15:00.793333 #4]  INFO -- : [] Completed 500 Internal Server Error in 305ms (ActiveRecord: 3.8ms)
2017-03-02T12:15:00.793869+00:00 app[web.1]: F, [2017-03-02T12:15:00.793819 #4] FATAL -- : []   
2017-03-02T12:15:00.793910+00:00 app[web.1]: F, [2017-03-02T12:15:00.793871 #4] FATAL -- : [] Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
2017-03-02T12:15:00.793958+00:00 app[web.1]: F, [2017-03-02T12:15:00.793909 #4] FATAL -- : []   
2017-03-02T12:15:00.793979+00:00 app[web.1]: F, [2017-03-02T12:15:00.793943 #4] FATAL -- : [] app/controllers/contacts_controller.rb:13:in `create'
2017-03-02T12:15:00.794339+00:00 heroku[router]: at=info method=POST path="/contacts" host=myapp.herokuapp.com request_id=25154829-90fe-44c4-a715-eaf9a6fd83d1 fwd="87.114.208.14" dyno=web.1 connect=1ms service=313ms status=500 bytes=1669

和它将我重定向到的实际链接是https://myapp.herokuapp.com/contacts

屏幕上的错误消息:"我们很抱歉,但是出了点问题。

如果您是应用程序所有者,请检查日志以获取更多信息。"

我感觉这可能与我的DB有关,但我不知道为什么它将其重定向到该链接。我迁移到Heroku的DB称为"联系人"

真的很感谢任何建议,谢谢。

您的问题似乎是通过电子邮件发送而不是重定向。如果您再次查看日志,您将看到以下几行:

2017-03-02T12:15:00.793409+00:00 app[web.1]: I, [2017-03-02T12:15:00.793333 #4]  INFO -- : [] Completed 500 Internal Server Error in 305ms (ActiveRecord: 3.8ms)
2017-03-02T12:15:00.793869+00:00 app[web.1]: F, [2017-03-02T12:15:00.793819 #4] FATAL -- : []   
2017-03-02T12:15:00.793910+00:00 app[web.1]: F, [2017-03-02T12:15:00.793871 #4] FATAL -- : [] Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):

您的应用程序正在返回500错误,日志中显示的错误消息指示电子邮件发送的问题(通过SMTP的电子邮件使用端口25)。

您是否已为HEROKU帐户安装和配置了电子邮件附加操作并将其附加到您的应用程序中?Heroku网站上有几个列出:

我怀疑这是在本地工作的,因为您正在运行诸如postfix之类的软件,但这在Heroku开箱即用。

最新更新