我正在使用Railscast构建Rails 3中的联系表单:http://railscasts.com/episodes/326-activeattr?view=asciicastRails 3 Contact Form,undefined方法?
我知道我唯一做错的事情就是填写消息应该发送的位置。我用下面的代码来发送消息:
mail(:to => "[email protected]")
然而,这似乎并没有工作,因为每次我提交表单,我得到这个错误:
NoMethodError in MessagesController#create
undefined method `mail' for #<MessagesController:0x00000103734bd8>
Application Trace | Framework Trace | Full Trace
app/controllers/messages_controller.rb:10:in `create'
我应该取代这一行用来发送消息?
messages_controller.rb
class MessagesController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(params[:message])
if @message.valid?
UserMailer.contact_message(@message).deliver
redirect_to root_url, notice: "Message sent! Thank you for contacting us."
else
render "new"
end
end
end
user_mailer.rb
class UserMailer < ActionMailer::Base
def contact_message(message)
@message = message
mail(:to => "[email protected]", :subject => "New Message")
end
end
为setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "mywebsite.com",
:user_name => "myemail",
:password => "secret",
:authentication => "plain",
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
http://guides.rubyonrails.org/action_mailer_basics.html – vellvisher
你有一个应用程序控制器,而不是行动梅勒 – vellvisher