2012-11-21 4 views
5

übergeben Ich habe Devise eingerichtet und woking groß. Ich verwende confirmable und haben diese modifiziert nach ihren 2 Schritt Registrierung Führung:Überlegen, wie current_user confirm_instructions mailer

set password at confirmation

Ich habe eine letzte Anforderung, dass ich Probleme mit.

Was wir haben, ist ein 2-Szenarien

1) ein Benutzer als neue registrieren

2 A in Benutzer (current_user angemeldet)) können Sie einen neuen Benutzer erstellen. Wenn ein angemeldeter Benutzer einen neuen Benutzer erstellt, möchte ich seine E-Mail in die Bestätigungs-E-Mail an den neu erstellten Benutzer

hinzufügen können. In der E-Mail an den neuen registrierten Benutzer muss ich die current_user.email übergeben irgendwie, wenn der Benutzer von einem Benutzer erstellt wurde, der man sich anmeldete. Ich werde dann ein einfaches tun, wenn Sie überprüfen und der E-Mail zusätzlichen Text hinzufügen.

die confirmation_instructions.html.erb zur Zeit:

<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> 

Was ich brauche, ist so etwas wie

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

<% if [email protected]? %> 
    <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> 

Ich habe ohne Freude hin und her mit benutzerdefinierten Mailer gehen. Kann mir jemand helfen, ich bin mir sicher, da ist etwas Einfaches, das mir hier fehlt.

Für Informationen (ich weiß, das ist nicht die beste Methode, aber wir werfen eine sehr schnelle App für Demozwecke) ein Benutzer erstellt einen neuen Kontakt durch Eingabe einer E-Mail-Adresse. Wenn die E-Mail-Adresse existiert nicht in der Benutzertabelle ein neuer Benutzer angelegt wird, dann erstellt die Kontaktbeziehung (Snippet des Controllers):

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 
     . 
     . 
     . 
     . 

Antwort

4

Follow this tutorial zum Einstellen eines benutzerdefinierten Mailer auf.

In config/initializers/devise.rb:

config.mailer = "UserMailer". 

einen neuen Mailer erstellen, die von Devise des Versenders in den Ordner app/Mailer erbt:

# 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 

nun Ihre devise Mailer Ansichten in den Ordner app/views/user_mailer. Dort erstellen Sie eine neue E-Mail-Ansicht, in der Sie die Variablen @sender und @ recipient verwenden können.

# invite.html.erb 
<p>Welcome <%= @recipient.email %>!</p> 

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

nun in Ihrem Controller, können Sie den folgenden Aufruf:

UserMailer.invite(current_user, newContact).deliver 
+0

Dank für Sie antworten. Was wir haben, ist ein 2 Szenarien 1) ein Benutzer kann als neu registrieren 2) ein anderer Benutzer (current_user) kann einen neuen Benutzer erstellen. Wenn ein angemeldeter Benutzer einen neuen Benutzer erstellt, möchte ich seine E-Mail-Adresse in die Bestätigungs-E-Mail einfügen können, die an den neuen Benutzer gesendet wurde. – vlwills

+0

Bearbeitete die Frage, um irgendeine Verwirrung von dem, was ich gefragt habe, zu klären – vlwills

+0

Wie erstellt ein angemeldeter Benutzer einen neuen Benutzer? Können Sie diesen Controller-Code bereitstellen? – Ashitaka