私は初めてレールベースのeコマースアプリケーションを構築しています。ユーザーが注文を送信したときにメールを送信したいと思います。たとえば、mealnut.comやfab.comで注文したときにメールで領収書を受け取る方法などです。チュートリアルを検索していましたが、注文送信メールに関連していませんでした。ユーザーがサインアップまたはリセットするすべての場所など。
誰かがそれを実装しましたか?または、Railsのリソース/チュートリアルを知っていますか?
あなたの指導/助けは高く評価されます!
私は初めてレールベースのeコマースアプリケーションを構築しています。ユーザーが注文を送信したときにメールを送信したいと思います。たとえば、mealnut.comやfab.comで注文したときにメールで領収書を受け取る方法などです。チュートリアルを検索していましたが、注文送信メールに関連していませんでした。ユーザーがサインアップまたはリセットするすべての場所など。
誰かがそれを実装しましたか?または、Railsのリソース/チュートリアルを知っていますか?
あなたの指導/助けは高く評価されます!
まず、必要なアクションを書き込むためのメーラーを生成します。
rails g mailer UserMailer
次に、app / mailers/user_mailer.rbファイルにあります
class UserMailer < ActionMailer::Base
default from: 'notifications@example.com'
def order_confirmation(user, order)
@user = user
@order = order
mail(to: user.email, subject: 'Order has been received')
end
end
メールの表示内容は次のようになりますapp/views/user_mailer/order_confirmation.html.erb
Hi <%= @user.name %>
You have successfully placed an order with us.
Please find the details of order....
#.............
次に、注文を作成するコントローラーアクションで、注文を作成した後に次の行を入力してメールを送信します
UserMailer.order_confirmation(user, order).deliver
詳細については、アクションメーラーのチュートリアルを参照してください。
メールの送信はかなり標準的な手順だと思います。あなたが見つけたチュートリアルはおそらく当てはまります。送信されるメッセージのトリガーは、任意のコントローラーアクションから実行できることを理解する必要があります。この場合、注文作成アクションが必要になります。
以下を読んだ後:
http://railscasts.com/episodes/61-sending-email-revised?view=asciicast
必要な変更を加えて、注文作成アクションからメーラーを呼び出すことができます。
class OrdersController < ApplicationController
def create
@order = Order.new(params[:order])
if @order.save
UserMailer.order_confirmation(@order, @user).deliver
redirect_to @user, notice: "Order Completed Successfully."
else
render :new
end
end
end
上記でUserMailerを使用している理由は、ユーザーにメッセージを送信するメーラーを設定する可能性が高いためですが、必要に応じてOrderMailerと呼ぶこともできます。
Deviseメーラーを使用することはできません/適切ではありません(deviseメーラーはユーザー認証を目的としているため)。あなたができることは、オブザーバークラスを使用して電子メールを送信することです。
元:
class Order < ActiveRecord::Base
#your standard order code
end
class OrderObserver < ActiveRecord::Observer
def after_create(order)
#Email sending code
end
end
このOrderObserverは、Order#createが終了したときに電子メールを送信します。オブザーバークラスについてもっと読む
rails3でメールを送信する場合は、こちらを確認してください。パスワードを忘れた場合や登録などのメールを送信する場合と同じように、内容が異なるだけです。