2012-11-21 10 views
5

Mam Devise skonfigurowany i świetnie się bawię. Używam POTWIERDZALNE i zostały zmodyfikowane w tym, jak na ich 2 Step Guide procesu rejestracji:Wymyśl, jak przekazać current_user do confirm_instructions mailer

set password at confirmation

mam jeden ostatni wymóg, że mam problemy z.

Co mamy jest to 2 scenariusze

1) użytkownik może się zarejestrować jako nowy

2) zalogowanego użytkownika (current_user) można utworzyć nowego użytkownika. Gdy zalogowany użytkownik tworzy nowego użytkownika Chcę móc dodać jego adres e-mail do wiadomości e-mail z potwierdzeniem wysłanej do nowego utworzonego użytkownika

W wiadomości e-mail do nowego zarejestrowanego użytkownika muszę przekazać w bieżącej_użytkowniku.email w jakiś sposób, jeśli użytkownik został utworzony przez użytkownika, z którym się zalogował. Zrobię wtedy proste, jeśli sprawdzisz i dodasz dodatkowy tekst do wiadomości e-mail.

confirmation_instructions.html.erb obecnie:

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

Co potrzebne jest coś

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

Chodziłem tam iz powrotem z niestandardowego programu pocztowego bez radości. Czy ktoś może mi pomóc, jestem pewien, że jest tu coś prostego, czego mi brakuje.

Informacje (wiem, że to nie jest najlepsza metoda, ale używamy bardzo szybkiej aplikacji do celów demonstracyjnych), użytkownik tworzy nowy kontakt, wpisując adres e-mail. Jeśli adres e-mail nie istnieje w tabeli użytkownika nowy użytkownik jest tworzony wówczas związek kontakt utworzony (fragment kontrolera):

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

Odpowiedz

4

Follow this tutorial na utworzenie niestandardowego przesyłkę.

W config/inicjalizatorów/devise.rb:

config.mailer = "UserMailer". 

Utwórz nową przesyłkę, która dziedziczy korespondencyjnego opracować w folderze app/koperty:

# 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 

Teraz przenieść swoje poglądy mailera opracować do aplikacji folderu/views/user_mailer. Utwórz nowy widok e-mail, w którym możesz użyć zmiennych @sender i @recipient.

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

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

Teraz w kontrolerze można wywołać następujące:

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

Dzięki za odpowiedz. Mamy 2 scenariusze: 1) użytkownik może zarejestrować się jako nowy 2) inny użytkownik (current_user) może utworzyć nowego użytkownika. Gdy zalogowany użytkownik tworzy nowego użytkownika, chcę mieć możliwość dodania jego wiadomości e-mail do wiadomości e-mail z potwierdzeniem wysłanej do nowego użytkownika. – vlwills

+0

Edytował pytanie, aby wyjaśnić wszelkie zamieszanie, o które prosiłem. – vlwills

+0

Jak jest zalogowany użytkownik, tworząc nowego użytkownika? Czy możesz podać ten kod kontrolera? – Ashitaka