↓↓クリックして頂けると励みになります。
【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 | メッセージ】
↓↓クリックして頂けると励みになります。