在我的ROR应用程序中,我正在尝试在注册时向我的注册用户发送确认电子邮件,我的网站目前在localhost上.我收到此错误:
- "undefined method `recipients' for #<UserMailer:0x3d841a0>"
这是我的代码;
development.rb
- config.action_mailer.delivery_method = :smtp
- config.action_mailer.default_url_options = { :host => "localhost:3000"}
- config.action_mailer.smtp_settings = {
- :address => "smtp.gmail.com",:port => "587",:authentication => :login,:user_name => "myemailid@gmail.com",:password => "myrealpassword"
- }
Users_controller.rb
- def new
- UserMailer.registration_confirmation(@user).deliver
- end
- def create
- @user = User.new(params[:user])
- if @user.save
- UserMailer.registration_confirmation(@user).deliver
- sign_in @user
- flash[:success] = "Welcome!"
- redirect_to @user
- else
- render 'new'
- end
- end
user_mailer.rb
- class UserMailer < ActionMailer::Base
- def registration_confirmation(user)
- recipients user.email
- from "myemailid@gmail.com"
- subject "Thank you for registration"
- body :user => user
- end
- end
解决方法
** development.rb **
- config.action_mailer.delivery_method = :sendmail
- config.action_mailer.perform_deliveries = true
- config.action_mailer.raise_delivery_errors = true
** Users_controller.rb **
- def new
- UserMailer.registration_confirmation(@user).deliver
- end
- def create
- @user = User.new(params[:user])
- if @user.save
- UserMailer.registration_confirmation(@user).deliver
- sign_in @user
- flash[:success] = "Welcome!"
- redirect_to @user
- else
- render 'new'
- end
- end
** User_mailer.rb **
- def registration_confirmation(user)
- @message = 'whatever you want to say here!'
- mail(:from => "myemailid@gmail.com",:to => user.email,:subject => "Thank you for registration")
- end
** / app / views / user_mailer / registration_confirmation.text.erb *
- <%= @message %>
这就是我在开发模式中所做的,它的工作原理