2012-11-21 12 views
5

Ho impostato Devise e woking great. Sto usando confermabile e hanno modificato questa come per la loro guida processo di registrazione 2 step:Stabilire come passare current_user a confirm_instructions mailer

set password at confirmation

Ho un'ultima richiesta che sto avendo difficoltà con.

Quello che abbiamo è un 2 scenari

1) un utente può registrarsi come nuovo A

2) dell'utente connesso (current_user) può creare un nuovo utente. Quando un utente che ha effettuato l'accesso crea un nuovo utente, desidero essere in grado di aggiungere la sua e-mail nell'e-mail di conferma inviata al nuovo utente creato

Nell'e-mail al nuovo utente registrato devo passare il current_user.email in qualche modo se l'utente è stato creato da un utente che ha effettuato l'accesso. Effettuerò quindi una semplice verifica e aggiungerò del testo extra all'e-mail.

il confirmation_instructions.html.erb attualmente:

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

cosa ho bisogno è qualcosa di simile a

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

Vado avanti e indietro con mailer personalizzati senza la gioia. Qualcuno può darmi una mano, sono certo che c'è qualcosa di semplice che mi manca qui.

Per informazioni (so che questo non è il metodo migliore ma stiamo lanciando un'app molto veloce per scopi dimostrativi) un utente crea un nuovo contatto digitando un indirizzo email. Se l'indirizzo email non esiste nella tabella utente un nuovo utente viene creato allora il rapporto di contatto creato (frammento di controllore):

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

risposta

4

Follow this tutorial per la creazione di un mailer personalizzato.

in config/inizializzatori/devise.rb:

config.mailer = "UserMailer". 

Creare un nuovo mailer che eredita da mailer di Devise nella cartella app/mailer:

# 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 

Ora, spostare le vostre opinioni mailer testamentaria alla cartella app/views/user_mailer. Crea una nuova vista email dove puoi usare le variabili @sender e @recipient.

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

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

Ora, nel controller, è possibile chiamare il seguente:

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

Grazie per voi la risposta. Quello che abbiamo è un 2 scenari 1) un utente può registrarsi come nuovo 2) un altro utente (current_user) può creare un nuovo utente. Quando un utente che ha effettuato l'accesso crea un nuovo utente, desidero poter aggiungere la sua email nell'e-mail di conferma inviata al nuovo utente. – vlwills

+0

Modificata la domanda per chiarire qualsiasi confusione su ciò che ho chiesto – vlwills

+0

Come è un utente che ha effettuato l'accesso creando un nuovo utente? Puoi fornire quel codice controller? – Ashitaka

Problemi correlati