私は現在、Rails 3を使用しており、連絡先フォームで作業しています。私のデータは送信されており、params
ハッシュからアクセスできますが、電子メールで使用するActionMailerクラスに送信しようとすると奇妙なエラーが発生しています。ActionMailerを使用して投稿データからメールを送信する際の問題
現在、このエラーが発生しています。
undefined method `TestName' for #<MessageMailer:0x00000003f43af0>
とエラーが奇妙なことが'TestName'
は、私は:name
入力用のコンタクトフォームに入力した値であることであるこれらのラインに
app/mailers/message_mailer.rb:8:in `message'
app/controllers/contact_controller.rb:20:in `message'
であると言います。ここで
がmessage_mailer.rbとcontact_controller.rb
から自分のコードMessageMailer
class MessageMailer < ActionMailer::Base
include ActiveModel::Validations
def message(data)
@data = data
validates_presence_of @data[:name]
validates_presence_of @data[:email]
validates_presence_of @data[:website]
validates_presence_of @data[:message]
mail(:from => "[email protected]", :to => "[email protected]", :subject => "New Message From #{data.name}")
end
end
あるContactController
class ContactController < ApplicationController
def message
if request.post?
@data = {
:name => params[:name],
:email => params[:email],
:website => params[:website],
:message => params[:message]
}
if MessageMailer.message(@data).deliver
redirect('/contact', :flash => 'Thank you for the message. I will get back to you as soon as possible')
else
redirect('/contact', :flash => 'Oops! Something went wrong. I will look into it. Until it\'s fixed you can email me at [email protected]')
end
else
redirect('/contact', :flash => 'Please fill out the contact form to get in touch.')
end
end
end
エラーがmessage_mailer.rbにラインvalidates_presence_of @data[:name]
上にあると言っていますcontact_controller.rbのif MessageMailer.message(@data).deliver
どのような助けが素晴らしいだろう!
UPDATE:さてさて、私は元のエラーを解決したが、今ではMessageMailer.message(@data).deliver
にこのエラーwrong number of arguments (0 for 1)
を投げています。 @data
をparams
に変更して、@data
変数の問題を回避しようとしましたが、まだそれを与えています。
@Architは、以下の方法でエラーを考え出したが、私はまだ、このエラーに引数の '間違った数(1 0)'取得しています。私はサーバを再起動し、 '@ data'を' params'で置き換えましたが、それでもそのエラーを投げています。なぜ私はそれにかなり明確に引数を与えているのかわからない。 – Mike
@paramsは、 '間違った引数数(1の場合は0)'を表示するとnilを返します。デバッガを使ってチェックします。 –
'@params'を使用していません。私が知っている' params'を使っています。投稿データと一緒に – Mike