2012-11-21 8 views
5

私はDeviseをセットアップして大きくウォーキングしています。私が確認できる使用していますし、彼らの2ステップの登録プロセスのガイドに従って、これを変更した:current_userをconfirm_instructionsメーラーに渡す方法を工夫する

set password at confirmation

私はとのトラブルを抱えています1つの最後の要件を持っています。我々が持っているもの

は、ユーザー(CURRENT_USER)にログインし、Aは、新規ユーザーを作成することができます)、ユーザーが新しい

2として登録することができます)2つのシナリオ

1です。 ログインしたユーザーが新規ユーザーを作成するとき新規作成ユーザーに送信された確認メールに自分の電子メールを追加できるようにしたい

新しい登録ユーザーへの電子メールでは、current_user.emailどういうわけか、ユーザーがログインしたユーザーによって作成されたものであれば、私は単純なチェックを行い、電子メールに余分なテキストを追加します。

現在

confirmation_instructions.html.erb:私は必要なもの

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

はノー喜びでカスタムメールプログラムで行ったり来たりしている

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

のようなものです。 誰かが私を助けることができる、私はここに何かシンプルなものがあると確信しています。

info(これは最善の方法ではありませんが、私たちはデモのために非常に高速なアプリを一緒に投げています)ユーザーは電子メールアドレスを入力して新しい連絡先を作成します。メールアドレスがユーザテーブルに存在しない場合は、新規ユーザーが作成され、その後、接触関係が作成された(コントローラの抜粋):

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

答えて

4

Follow this tutorialカスタムメールプログラムを設定します。 、今

# 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 

あなたの工夫メーラービューを移動:

config.mailer = "UserMailer". 

フォルダアプリ/メーラーに工夫のメーラーから継承する新しいメーラーを作成します。config /初期化子/ devise.rbで

app/views/user_mailerフォルダに移動します。変数@senderと@recipientを使用できる新しい電子メールビューが作成されます。

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

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

今、あなたのコントローラには、次のように呼び出すことができます:あなたは返信用

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

感謝を。私たちが持っているのは、2つのシナリオです。1)ユーザーは新規として登録できます。2)別のユーザー(current_user)が新しいユーザーを作成できます。ログインしたユーザーが新しいユーザーを作成すると、新しいユーザーに送信された確認メールに自分のメールアドレスを追加できるようにしたいと考えています。 – vlwills

+0

私が尋ねたことの混乱を解決するために質問を編集しました – vlwills

+0

ログインしたユーザーはどのように新しいユーザーを作成していますか?あなたはそのコントローラコードを提供できますか? – Ashitaka

関連する問題