学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails7.1 | 動画学習アプリ作成 | 36 | 購入確認電子メール

↓↓クリックして頂けると励みになります。



35 | ホームページ】 << 【ホーム】 >> 【37 | メッセージ



プロジェクトを購入したら確認メールが送信されるように実装します。


「app\mailers」フォルダに「purchase_mailer.rb」ファイルを新規作成してください。


app\mailers\purchase_mailer.rb(新規作成したファイル)

class PurchaseMailer < ApplicationMailer

    def send_email_to_buyer(buyer, project)
      @buyer = buyer
      @project = project
      mail(to: @buyer.email, subject: "プロジェクトのご購入ありがとうございます")
    end

end



「app\views」フォルダに「purchase_mailer」フォルダを新規作成してください。
作成した「purchase_mailer」フォルダに「send_email_to_buyer.html.erb」ファイルを新規作成してください。



app\views\purchase_mailer\send_email_to_buyer.html.erb(新規作成したファイル)

<%= @buyer.full_name %><br/>
<br/>
<br/>
プロジェクト「<%= @project.name %>」のご購入、誠にありがとうございます。<br/>
<br/>
<br/>
<%= @buyer.full_name %>様に幸運を☆<br/>



記述追加 app\controllers\charges_controller.rb
26行目に「PurchaseMailer.send_email_to_buyer(current_user, project).deliver_later」の記述追加

class ChargesController < ApplicationController
	
	before_action :authenticate_user!

	def free
		project = Project.find(params[:project_id])
		if current_user.stripe_id.blank?
			flash[:alert] = "クレジットカードを登録してください。"
			return redirect_to settings_payment_path
		else
			charge
		end
	end

	private
  	def charge
		project = Project.find(params[:project_id])
		if !current_user.stripe_id.blank?
		customer = Stripe::Customer.retrieve(current_user.stripe_id)
		charge = Stripe::Charge.create(
			:customer => customer.id,
			:amount => project.price,
			:currency => 'JPY'
		)
		if charge
			PurchaseMailer.send_email_to_buyer(current_user, project).deliver_later
			current_user.subscriptions.create(project: project)
			flash[:notice] = "プロジェクトを購入しました。"
			redirect_to project
		else
			flash[:notice] = "購入できませんでした。"
		end
		end
	rescue Stripe::CardError => e
		flash[:alert] = e.message
		redirect_to project
	end
end



これでプロジェクト購入時に購入者へ電子メールが送信されるようになりました。

購入確認メール
購入確認メール



35 | ホームページ】 << 【ホーム】 >> 【37 | メッセージ




↓↓クリックして頂けると励みになります。

関連記事(外部サイト)