我正在尝试向另一个我未登录的用户发送一封电子邮件,该用户在另一个名为“user2”的设计模型上,他们使用该站点的方式与“用户”不同。当我创建一条新消息时,我可以通过以下方式向 current_user 发送电子邮件:
UserMailer.new_message_sent_user(current_user).deliver
然后在 UserMailer 中:
def new_message_sent_user(user)
@user = user
mail to: @user.email, subject: "New message sent to user2!"
end
但是,我还需要向“user2”发送一封电子邮件,但很难通过他们的 ID 找到他们并将他们的电子邮件传递给操作邮件。我知道我在 user2_id 中有一个值,因为它在创建消息时成功保存。在新动作中,我发现:
@user2 = User2.find(:first,:conditions=>["id = ?", @post.user2_id])
然后在创建中我有
UserMailer.new_message_sent_user2(@user2).deliver
然后在 UserMailer 我有:
#send to advisor when he has sent a new message to an advisor
def new_message_sent_user2(user2)
@user2 = user2
mail to: @user2.email, subject: "You have received a message from user"
end
但是我收到一个错误,我认为它有一个 nil 电子邮件,那么我怎样才能找到并设置 user2 对象来发送电子邮件?:
undefined method `email' for nil:NilClass
任何帮助将不胜感激!
使用 create 操作更新:
# POST /messages
# POST /messages.json
def create
@message = current_user.messages.build(params[:message])
respond_to do |format|
if @message.save
UserMailer.new_message_sent_user(current_user).deliver
UserMailer.new_message_sent_user2(@user2)
format.html { redirect_to users_path, notice: 'Your message has been sent!' }
format.json { render json: @message, status: :created, location: @message }
else
format.html { render action: "new" }
format.json { render json: @message.errors, status: :unprocessable_entity }
end
end
end