0

ユーザーが新しいステータスの作成など、Webサイト内でさまざまなアクションを完了したときに、ActionMailerを使用して電子メールをトリガーしようとしています。

Statusesコントローラーのcreateメソッドでメーラーを呼び出そうとすると、NoMethodErrorが発生します。

nil:NilClassの未定義のメソッド'email'

誰かが私が何が悪いのかを理解するのを手伝ってもらえますか?

ステータスコントローラ内からの私のコードは次のとおりです。

def create
  @status = current_user.statuses.new(params[:status])

  respond_to do |format|
    if @status.save
      UserMailer.status_confirmation(@user).deliver
      format.html { redirect_to @status, notice: 'Status was successfully created.' }
      format.json { render json: @status, status: :created, location: @status }
    else
      format.html { render action: "new" }
      format.json { render json: @status.errors, status: :unprocessable_entity }
    end
  end
end

これが私のUserMailerコードです:

class UserMailer < ActionMailer::Base

  default :from => "myemail@gmail.com"

  def status_confirmation(user)
    mail(:to => user.email, :subject => "Status Posted")
  end
end
4

1 に答える 1

0

nullユーザー()を渡しています@user

def create
  @status = current_user.statuses.new(params[:status])
  respond_to do |format|
    if @status.save
      # There's no @user here, unless it's initialized in a filter, etc.
      UserMailer.status_confirmation(@user).deliver

代わりに意味しましたかcurrent_user、それとも初期化するのを忘れましたか(またはコードを忘れましたか)?

于 2013-01-03T00:58:28.083 に答える