gpt4 book ai didi

ruby-on-rails - 设计如何将 current_user 传递给 confirm_instructions 邮件程序

转载 作者:行者123 更新时间:2023-12-03 16:03:20 25 4
gpt4 key购买 nike

我已经设置好设计并且工作得很好。我正在使用可确认并已根据他们的两步注册流程指南对其进行了修改:

set password at confirmation

我有最后一个要求,我遇到了麻烦。

我们有两个场景

1)用户可以注册为新用户

2) 一个登录的用户(current_user)可以创建一个新用户。
当登录用户创建新用户时,我希望能够将他们的电子邮件添加到发送给新创建用户的确认电子邮件中

在给新注册用户的电子邮件中,如果用户是由登录的用户创建的,我需要以某种方式传递 current_user.email。然后我将做一个简单的 if 检查并向电子邮件添加一些额外的文本。

目前confirmation_instructions.html.erb:

<p>Welcome <%= @resource.email %>!</p>

<p>You can confirm your account email through the link below:</p>

<p><%= link_to 'Confirm account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

我需要的是类似的东西
<p>Welcome <%= @resource.email %>!</p>

<% if !@user.email.nil? %>
<p> some additional welcome text here from <%= @user.email %> </p>
<% end %>

<p>You can confirm your account email through the link below:</p>

<p><%= link_to 'Confirm account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

我一直在用定制的邮件来回走动,没有任何乐趣。
有人可以帮助我吗,我确定我在这里缺少一些简单的东西。

有关信息(我知道这不是最好的方法,但我们正在将一个非常快速的应用程序放在一起用于演示目的)用户通过输入电子邮件地址来创建一个新联系人。如果用户表中不存在电子邮件地址,则会创建一个新用户,然后创建联系人关系( Controller 的片段):
class DashboardController < ApplicationController
before_filter :authenticate_user!

def show
@contacts = current_user.contacts
end

def createcontact
user2 = User.find_by_email(params[:contact_email])
if user2.nil?
newContact = User.create(:email => params[:contact_email])
if newContact.save
current_user.newUserContact(newContact)
redirect_to dashboard_path, :notice => "conact has been saved as well as a new contact"
else
redirect_to dashboard_path, :notice => "ERROR saving contact"
end
else
.
.
.
.

最佳答案

Follow this tutorial用于设置自定义邮件程序。

在 config/initializers/devise.rb 中:

config.mailer = "UserMailer".

在文件夹 app/mailers 中创建一个继承自 Devise 的邮件程序的新邮件程序:
# user_mailer.rb
class UserMailer < Devise::Mailer

def invite(sender, recipient)
@sender = sender
@recipient = recipient

mail( :to => recipient.email,
:subject => "Invite by #{sender.name}"
)
end
end

现在,将您的设计邮件程序 View 移动到文件夹 app/views/user_mailer。创建一个新的电子邮件 View ,您可以在其中使用变量@sender 和@recipient。
# invite.html.erb
<p>Welcome <%= @recipient.email %>!</p>

<% if @sender.email? %>
<p> some additional welcome text here from <%= @sender.email %> </p>
<% end %>

现在,在您的 Controller 中,您可以调用以下内容:
UserMailer.invite(current_user, newContact).deliver

关于ruby-on-rails - 设计如何将 current_user 传递给 confirm_instructions 邮件程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com