我希望在新用戶註冊時能夠將新用戶的IP地址發送到我的管理員帳戶。我有:通過電子郵件在紅寶石上發送IP地址
class UserMailer < ActionMailer::Base
default :from => '"Admin" <[email protected]>'
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" <[email protected]>',
: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
,我發現了錯誤:
NameError在UsersController#創建 未定義的局部變量或方法'要求」爲#
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
請求方法在控制器中可用。如果你在郵件程序中需要它,你需要把它作爲一個arg來傳遞。 – thargor
我通過添加參數進行更新(請參見上文)。我不再有任何錯誤,但在電子郵件中,IP地址是空白的。 – Jet59black
你可以在你正在調用registration_confirmation的地方添加控制器代碼嗎?那就是你可以訪問有權訪問該IP的請求方法的地方。您可能應該將其作爲參數傳遞給registration_confirmation方法。 – thargor