2015-02-11 30 views
2

錯誤發生在創建方法用戶郵件程序部分。 我想解決它,但沒有任何反應。 如何解決?當我申請驗證時,我來了。爲什麼此郵件程序在應用驗證之後出現錯誤?

的錯誤是:Expected a URI like gid://app/Person/1234: #<URI::GID gid://email>

我的郵件控制器:

class UserMailer < ApplicationMailer 
     def welcome_email(user) 
     @user = user 

     @url = 'http:3000//example.com/[email protected]' 

     mail(to: @user.email, subject: 'Welcome to My Awesome Site') 

    end 
end 

我的用戶控制器:

class UsersController < ApplicationController 
    def new 
     @user = User.new 
     end 

    def create 
     @user = User.new(user_params) 
     @user.save 
      UserMailer.welcome_email(@user).deliver_later[here the error come about the invalid url] 
     render 'token' 
    end  

    def verify 
     @user = User.authenticate(params[:auth_token]) 
     if @user 
     redirect_to edit_user_path(@user) 
     else 
     flash.now.alert = "Invalid email or password" 
     render 'token', :alert =>"Invalid email or password" 
     end 
    end 


    def edit 
     @user = User.find(params[:id]) 
    end 

    def update 
     @user = User.find(params[:id]) 
      if @user.update(user_params) 
      redirect_to new_login_path 
      else 
      render 'edit' 
     end 
     end 

    private 
     def user_params 
    params.require(:user).permit(:first_name, :last_name, :dob, :email, 

    :password, :confirm_password, :auth_token) 

     end 
    end 
+0

顯示我們的郵件模板中。 :) – BroiSatse 2015-02-11 13:19:07

+0

錯誤出現在郵件的哪一行? – dgilperez 2015-02-11 13:19:52

+0

在創建方法中,我們稱之爲郵件程序 – 2015-02-11 13:26:10

回答

2

您正在嘗試通過梅勒的非持久對象,即。未保存到數據庫的對象。

從您的代碼中,這意味着之前的@user.save語句可能由於驗證錯誤而失敗。在這種情況下,您不想發送電子郵件。

更改create操作是這樣的:

def create 
    @user = User.new(user_params) 
    if @user.save 
    UserMailer.welcome_email(@user).deliver_later 
    render 'token' 
    else 
    flash[:error] = 'User was not saved' 
    render 'new' 
    end 
end  
+0

以及如何在郵件程序中發送非持久性AR對象? (我正在做一個電子郵件測試功能,通過創建一個虛假的對象來填寫電子郵件併發送給我的管理員電子郵件發送電子郵件預覽) – pastullo 2015-11-19 22:15:43

+0

@pastullo那麼,我想你應該問一個新的問題,提供所有的細節你的上下文。你可以引用我,我會看看。 – dgilperez 2015-11-20 16:29:36

+0

謝謝你,我最終通過在mailer方法中創建AR對象來解決這個問題,所以即使它沒有被持久化 – pastullo 2015-11-21 17:30:00

相關問題