简体   繁体   English

将IP地址发送到ruby on rails上的电子邮件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM