错误来自create method用户邮件程序部分。 我试图解决它,但没有任何反应。 怎么解决?我在申请验证时来了。
错误是: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/login@u'
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 :(得分:2)
您正在尝试将Mailer传递给未加载的对象,即。未保存到数据库的对象。
从您的代码中,这意味着之前的@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