#解決したいこと
HerokuSchedullerを使い、こちらが指定した時間で、rake taskを実行させたいのですが、実行させるメール送信機能のPreviewにエラーが発生しており、解決したいと考えております。
エラー内容:wrong number of arguments (given 0, expected 1)
user
を引数として渡しているはずなのに、Preview画面では一向に変わらずお手上げ状態です。お力貸して頂けますと幸いです。
この後の「send_alert」をクリックすると、下記の通りエラーになってしまいます。
#環境
- Rails:5.2.4
- DB:PostgreSQL
- Heroku Scheduller
#コード
mailers/previews/alert.mailer_previrew.rb
ruby
1# Preview all emails at http://localhost:3000/rails/mailers/alert_mailer 2class AlertMailerPreview < ActionMailer::Preview 3 def send_alert(user) 4 @user = user 5 mail( 6 to: @user.email, 7 subject: '練習記録を登録しましょう!' 8 ) 9 # mail to: "#{@user.email}", subject: "Hello,#{@user.email}" 10 # mail to: user.email, subject: '練習記録を登録しましょう!' 11 end 12end
app/mailers/application_mailer.rb
ruby
1class ApplicationMailer < ActionMailer::Base 2 default from: 'noreply@example.com' 3 layout 'mailer' 4end
terminal
terminal
1Started GET "/rails/mailers/alert_mailer/send_alert" for ::1 at 2020-06-30 15:53:55 +0900 2Processing by Rails::MailersController#preview as HTML 3 Parameters: {"path"=>"alert_mailer/send_alert"} 4Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms) 5 6 7ArgumentError - wrong number of arguments (given 0, expected 1): 8 test/mailers/previews/alert_mailer_preview.rb:3:in `send_alert' 9 10Started POST "/__better_errors/30c7823ed90f92ce/variables" for ::1 at 2020-06-30 15:53:55 +0900 11
app/views/alert_mailer/send_alert.html.slim
app/views/alert_mailer/send_alert.text.html.slim
= user.mail 様 この度は「TTManager」を利用頂きましてありがとうございます。 br/ 練習記録の登録はお済みですか?お済みでない場合は、こちらからログインをお願い致します。 br/ = link_to 'https://vast-anchorage-69571.herokuapp.com/', do | ログインはこちら span
app/models/user.rb
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable,:recoverable, :rememberable, :validatable, password_length: 6..128 has_many :records def self.guest find_or_create_by(email: "guest@example.com") do |user| user.password = SecureRandom.urlsafe_base64 # user.confirmed_at = Time.now # Confirmable を使用している場合は必要 end end end
追記
alert_mailer.rb
class AlertMailer < ApplicationMailer def send_alert(user) @user = user mail to: @user.email, subject: '練習記録を登録しましょう!' # mail to: "#{@user.email}", subject: "Hello,#{@user.email}" # mail to: user.email, subject: '練習記録を登録しましょう!' end end
回答1件
あなたの回答
tips
プレビュー