2016-12-18 8 views
0

ユーザ入力のメールアドレスを取得して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を走らせましたが、何も出ていませんでした。

+0

私はこれが答えになるとは思わないが、私はいつもあなたのルートの一番下に「コントローラ#アクション」というルートを見つけた。 ログは、何が起こっているのかを正確に見るのに役立ちます。 – phillyslick

+0

あなたは 'action'というフォームをチェックしなければならないと思います。この問題の原因となる静的な型付きURLがあるかもしれません。 – uzaif

+3

" .deliver is failing "のように説明した内容に基づいて、リダイレクトは決してできません。あなたはherokuでmailgun変数を正しく設定していますか? –

答えて

0

私はついにそれを理解しました。私はMailgunにサンドボックスドメインを使用していました。私がテストしていた電子メールは、私がMailgunで使用することを許可したものと同じではありませんでした。

関連する問題