2013-08-12 26 views
1

我想送感謝郵件給誰剛剛註冊的用戶,我想我已經得到的一切權利,但不知何故沒能獲得註冊user_mailer.rb用戶的電子郵件ID。我正在使用設計和使用current_user.email或@ current_user.email給出錯誤。這是我的代碼如何獲得設計用戶電子郵件中UserMailer

#/app/mailers/user_mailer.rb 
def welcome (current_user) 
    mail(
    :from => "[email protected]", 
    :to => current_user.email, 
    :subject => "Thank you for signing" 
) 
end 

#/應用/控制器/ registration_controller.rb

def create 
    build_resource 

    if resource.valid? 
    begin 
     resource.transaction do 
     resource.save! 
     end 
    UserMailer.welcome(@current_user).deliver 
    end 
end 

錯誤我得到

undefined method `email' for nil:NilClass 

編輯 - 好吧,我終於能夠解決它,在控制器我使用UserMailer.welcome(@current_user).deliver而不是UserMailer.welcome(@user).deliver,現在它工作,感謝所有幫助過的人

+0

你可以添加'registrations_controller#create'的完整代碼? – Santhosh

+0

你的'current_user'是零,這意味着你不能在這麼'current_user.email'記錄應該拋出錯誤 –

+0

@ neo的 - 我已經添加了完整的代碼 – iCyborg

回答

2

使用「資源」的方法,如果你覆蓋設計控制器獲取當前用戶:

def create 
    build_resource(sign_up_params) 

    if resource.save 
    UserMailer.welcome(resource).deliver 
    # some other actions... 
    end 
end 

此外,可能是你應該把電子郵件型號的回調,而不是控制器發送代碼?

+0

我已經添加了完整的控制器代碼,我應該在Resource.save之前放置UserMailer.welcome(@current_user).deliver嗎? – iCyborg

+0

不,應該是保存後 – gvalmon

+0

好吧我把那個「除非current_user.nil?... else ...」的代碼放在上面的評論https://gist.github.com/rajcybage/6210925,電子郵件肯定是由於我收到電子郵件列出在其他部分的NIL,我該如何解決這個問題,所以它需要current_user.email? – iCyborg

1

嘗試使用

@user = User.new(params[:user]) 
    if @user.save 
    set_flash_message :notice, :signed_up if is_navigational_format? 
    sign_up(:user, @user) 
    UserMailer.welcome(@user).deliver 
    else 
    clean_up_passwords @user 
    end 
+0

我使用設計並創建了registations_controller.rb文件我不認爲我必須再次創建用戶對象 – iCyborg

相關問題