2012-11-21 12 views
5

Tôi đã thiết lập và khơi dậy sự tuyệt vời. Tôi đang sử dụng confirmable và đã sửa đổi này theo 2 bước quá trình đăng ký hướng dẫn của họ:Hãy tìm cách vượt qua current_user để xác nhận_instructions gửi thư

set password at confirmation

Tôi có một yêu cầu cuối cùng mà tôi đang gặp sự cố.

Những gì chúng ta có là một kịch bản 2

1) người dùng có thể đăng ký

2) A như mới sử dụng đăng nhập (CURRENT_USER) có thể tạo một người dùng mới. Khi người dùng đã đăng nhập tạo người dùng mới, tôi muốn có thể thêm email của họ vào email xác nhận được gửi đến người dùng mới được tạo

Trong email cho người dùng đã đăng ký mới, tôi cần chuyển vào current_user.email bằng cách nào đó nếu người dùng được tạo bởi người dùng đăng nhập. Sau đó tôi sẽ thực hiện một thao tác đơn giản nếu kiểm tra và thêm một số văn bản bổ sung vào email.

các confirmation_instructions.html.erb hiện:

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

Những gì tôi cần là một cái gì đó giống như

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

Tôi đã được đi tới đi lui với bưu phẩm tùy chỉnh không có niềm vui. Ai đó có thể giúp tôi, tôi chắc chắn có điều gì đó đơn giản mà tôi đang thiếu ở đây.

Để biết thông tin (Tôi biết đây không phải là phương pháp tốt nhất nhưng chúng tôi đang cùng nhau đưa ra một ứng dụng rất nhanh cho mục đích demo) người dùng tạo liên hệ mới bằng cách nhập địa chỉ email. Nếu địa chỉ email không tồn tại trong bảng sử dụng một người dùng mới được tạo ra thì mối quan hệ tiếp xúc tạo ra (đoạn của bộ điều khiển):

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

Trả lời

4

Follow this tutorial lập một bưu phẩm tùy chỉnh.

Trong config/initializers/devise.rb:

config.mailer = "UserMailer". 

Tạo một bưu phẩm mới được thừa kế từ bưu phẩm lập mưu trong ứng dụng thư mục/bưu phẩm:

# 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 

Bây giờ, di chuyển quan điểm bưu phẩm devise của bạn vào ứng dụng thư mục/lượt xem/user_mailer. Có một chế độ xem email mới, nơi bạn có thể sử dụng các biến @sender và @recipient.

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

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

Bây giờ, trong điều khiển của bạn, bạn có thể gọi như sau:

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

Cảm ơn bạn trả lời. Những gì chúng tôi có là 2 kịch bản 1) người dùng có thể đăng ký làm mới 2) một người dùng khác (current_user) có thể tạo người dùng mới. Khi người dùng đã đăng nhập tạo người dùng mới, tôi muốn có thể thêm email của họ vào email xác nhận được gửi tới người dùng mới. – vlwills

+0

Đã chỉnh sửa câu hỏi để làm rõ mọi sự nhầm lẫn về những gì tôi đã yêu cầu – vlwills

+0

Người dùng đã đăng nhập tạo người dùng mới như thế nào? Bạn có thể cung cấp mã điều khiển đó không? – Ashitaka

Các vấn đề liên quan