ユーザ入力のメールアドレスを取得してDBに格納し、そのアドレスにウェルカムメールを送信しようとしています。これが成功すると、ユーザーはroot
にリダイレクトされます。ローカルでこれは正しく行われていますが、Heroku製作サーバーではアドレスがDBに保存されていますが、ユーザーはsubscribers
にリダイレクトされます。これはサブスクライバを保存するためのAPIコールですが、対応するビューはありません。生産現場のRailsでは、POSTリクエスト(ローカルで作業中)後にリダイレクトが間違っています
電子メールも送信されていませんが、それは別の問題である可能性があります。それが重要な場合は、MailGunを使用して電子メールを送信しようとしています。
は私が...必要なこれらのファイルのかわからないんだけど、
routes.rbを:
Rails.application.routes.draw do
root to: 'pages#home'
resources :subscribers, only: :create
end
/controllers/subscribers_controller.rb:
class SubscribersController < ApplicationController
def new
@subscriber = Subscriber.new
end
def create
@subscriber = Subscriber.new(subscriber_params)
if @subscriber.save
SubscribeMailer.subscribe_email(@subscriber).deliver
flash[:success] = "Success! Check your email."
redirect_to root_path
else
flash[:danger] = "Oops! That's not a valid email."
redirect_to root_path
end
end
private
def subscriber_params
params.require(:subscriber).permit(:email)
end
end
/models/subscriber.rb:
class Subscriber < ActiveRecord::Base
validates_email_format_of :email, uniqueness: true
end
/mailers/subscriber_mailer.rb:
class SubscribeMailer < ActionMailer::Base
default from: "[email protected]"
def subscribe_email(subscriber)
mail(to: subscriber.email, subject: 'Subject')
end
end
/config/environment.rb:他のいくつかのStackOverflowのスレッドを見て
# Load the Rails application.
require File.expand_path('../application', __FILE__)
# Initialize the Rails application.
Rails.application.initialize!
ActionMailer::Base.smtp_settings = {
:port => ENV['MAILGUN_SMTP_PORT'],
:address => ENV['MAILGUN_SMTP_SERVER'],
:user_name => ENV['MAILGUN_SMTP_LOGIN'],
:password => ENV['MAILGUN_SMTP_PASSWORD'],
:domain => 'subdomain.herokuapp.com',
:authentication => :plain,
}
ActionMailer::Base.delivery_method = :smtp
、OPはを求めていましたプロードログ用。私はheroku logs
を走らせましたが、何も出ていませんでした。
私はこれが答えになるとは思わないが、私はいつもあなたのルートの一番下に「コントローラ#アクション」というルートを見つけた。 ログは、何が起こっているのかを正確に見るのに役立ちます。 – phillyslick
あなたは 'action'というフォームをチェックしなければならないと思います。この問題の原因となる静的な型付きURLがあるかもしれません。 – uzaif
" .deliver is failing "のように説明した内容に基づいて、リダイレクトは決してできません。あなたはherokuでmailgun変数を正しく設定していますか? –