我目前正在使用Rails 3並在聯繫表單上工作。我的數據正在發送,我可以從params
哈希訪問它,但當我嘗試將它發送到我的ActionMailer類以用於電子郵件時,我正在引發奇怪的錯誤。使用ActionMailer從發佈數據發送電子郵件的問題
它目前正在拋出此錯誤。
undefined method `TestName' for #<MessageMailer:0x00000003f43af0>
,並表示該錯誤是在這些線路上
app/mailers/message_mailer.rb:8:in `message'
app/controllers/contact_controller.rb:20:in `message'
奇怪的是,'TestName'
是我進入的聯繫方式爲:name
輸入值。
下面是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]
和if MessageMailer.message(@data).deliver
in contact_controller.rb
任何幫助將是偉大的!
UPDATE:好吧,我解決了原來的錯誤,但現在它拋出這個錯誤wrong number of arguments (0 for 1)
上MessageMailer.message(@data).deliver
。我試圖將@data
更改爲params
以繞過@data
變量的任何問題,並且它仍在提供。
@Archit想出方法錯誤,但我仍然得到這個錯誤'錯誤的參數數目(0 1)'。我重新啓動了服務器,並用'params'替換了'@ data',它仍然拋出這個錯誤。不知道爲什麼,因爲我很明確地給它一個論點。 – Mike 2012-02-24 09:15:43
@params會有零,如果顯示'錯誤數量的參數(0爲1)'使用調試器檢查 – 2012-02-24 09:51:50
我沒有使用'@ params'我使用'params',我知道事實上是一個散列填充與發佈數據。 – Mike 2012-02-24 10:22:22