[英]Sending IP address to an email in ruby on rails
I want to be able to send a new user's ip address to my admin account when a new user signs up. 我希望能够在新用户注册时将新用户的IP地址发送到我的管理员帐户。 I have: 我有:
class UserMailer < ActionMailer::Base
default :from => '"Admin" <support@mysite.com>'
def registration_confirmation(user)
@user = user #needed in order to have access to user variables
def client_ip
@client_ip = request.remote_ip
end
mail(:to => "#{user.name} <#{user.email}>", :subject => "Welcome to MySite").deliver!
mail(:to => '"Admin" <support@mysite.com>',
:subject => "New Member",
:body => "New member #{user.name} with email #{user.email} and ip: #{@client_ip} has just signed up!",
:content_type => "text/html")
end
end
I'm getting the error: 我收到错误:
NameError in UsersController#create undefined local variable or method `request' for # UsersController中的NameError#为#创建未定义的局部变量或方法`request'
users_controller.rb users_controller.rb
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user).deliver
sign_in @user
redirect_to @user
else
render 'new'
end
end
Something like: 就像是:
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user, request.remote_ip).deliver
sign_in @user
redirect_to @user
else
render 'new'
end
end
def registration_confirmation(user, client_ip = '0.0.0.0')
@user = user #needed in order to have access to user variables
mail(:to => "#{user.name} <#{user.email}>", :subject => "Welcome to MySite").deliver!
mail(:to => '"Admin" <support@mysite.com>',
:subject => "New Member",
:body => "New member #{user.name} with email #{user.email} and ip: #{client_ip} has just signed up!",
:content_type => "text/html")
end
You only have access to the request object in the controller/view. 您只能访问控制器/视图中的请求对象。 So you need to pass the value along to the mailer if that is where you want to have access to it. 因此,如果您想要访问它,则需要将值传递给邮件程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.