В настоящее время я использую Rails 3 и работаю над формой контакта. Мои данные отправляются, и я могу получить к ним доступ из хеша params
, но меня выдают странные ошибки, когда я пытаюсь отправить их в мой класс 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@domain.com", :to => "email@domain.com", :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@domain.com')
end
else
redirect('/contact', :flash => 'Please fill out the contact form to get in touch.')
end
end
end
Это говорит о том, что ошибки находятся на линии validates_presence_of @data[:name]
в message_mailer.rb и if MessageMailer.message(@data).deliver
в contact_controller.rb
Любая помощь будет отличной!
ОБНОВЛЕНИЕ: Хорошо, я решил исходную ошибку, но теперь она выдает эту ошибку wrong number of arguments (0 for 1)
на MessageMailer.message(@data).deliver
. Я попытался изменить @data
на params
, чтобы обойти любые проблемы с переменной @data
, и она все еще дает это.