🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

836閲覧

メールを送りたいのですが、undefined method `guider' for nil:NilClassのエラーが出てしまい、guiderを取得することができない状態にあります。

avicii

総合スコア49

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/10/11 08:39

編集2019/10/12 10:46

私は、今現在決済処理後に投稿者と購入者にメールを送りたいと考えています。しかし、guiderを取得することができないために、メールが送れない状態にあります。もしわかる方がいらしたら、guiderの取得方法を教えて頂きたいです。

guider_shipment_mailでのエラー
イメージ説明
イメージ説明
guider_payment_mailでのエラー
イメージ説明

controller/plans_controler.rb

controller

1def purchase 2 3 @plan = Plan.find(params[:id]) 4 5end 6 7def show 8 @plan = Plan.find(params[:id]) 9 10 customer = Stripe::Customer.create({ 11 email: params[:stripeEmail], 12 source: params[:stripeToken], 13 }) 14 15 16 charge = Stripe::Charge.create({ 17 customer: customer.id, 18 amount: @plan.price, 19 description: "商品ID:#{@plan.id} 商品名:#{@plan.title}", 20 currency: "jpy", 21 22 }) 23 if customer.save 24 #ページのリダイレクト 25 redirect_to "/plans/#{@plan.id}/purchase", notice: "商品を購入しました!" 26 #購入者にメールを送る 27 GuiderMailer.guider_payment_mail(self).deliver_now 28 #投稿者にメールを送る 29 GuiderMailer.guider_shipment_mail(self).deliver_now 30 #投稿を削除する 31 @plan.destroy 32 else 33 redirect_to "/plans/#{@plan.id}/fail", notice: "エラーが起きました" 34 end 35 36 rescue Stripe::CardError => e 37 flash[:error] = e.message 38 39 end

mailer/guider_mailer.rb

mailer

1class GuiderMailer < ApplicationMailer 2 default from: '¥¥¥¥¥¥¥¥¥¥¥@gmail.com' 3 layout 'mailer' 4 5 #購入者 6 def guider_payment_mail(guider) 7 @guider = guider 8 mail( 9 from: '<¥¥¥¥¥¥¥¥¥¥¥¥¥@gmail.com>', 10 to: "<#{@guider.email}>", 11 subject: 'お問い合わせ' 12 ) 13 end 14 #投稿者 15 def guider_shipment_mail(guider) 16 @guider = guider 17 mail( 18 from: "%%%%%%%%%%@gmail.com>", 19 to: "<#{@plan.guider.email}>", 20 subject: "お問い合わせ" 21 ) 22 end 23 24end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

@plan = Plan.find(params[:id]) でデータが取れていないんですね
id が正しいか、そういうデータが存在するかまず確認してみて下さい

投稿2019/10/11 08:54

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avicii

2019/10/12 10:50

guider_shipment_mailはplanメールを作って、設定した方がいいのでしょうか? guiderメールで設定する方法はあるのでしょうか?
guest

0

ベストアンサー

そもそもコントローラで生成したインスタンス変数をApplicationMailerでそのまま使えましたっけ。
無理だと思うのでApplicationMailer側で@planを用意し直すか引数で渡してくる必要があると思います。

投稿2019/10/11 09:14

Mugheart

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avicii

2019/10/12 10:49

この場合は、どのように用意し直せばよろしいでしょうか。
Mugheart

2019/10/12 11:10

回答にも書いてますが、@plan = ... で用意し直すか、メソッドの引数に渡すかで用意し直せばよいのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問