5

私はDeviseをセットアップし、素晴らしいウォーキングをしました。私はconfirmableを使用しており、2ステップの登録プロセスガイドに従ってこれを変更しました。

確認時にパスワードを設定する

私が問題を抱えている最後の要件が1つあります。

私たちが持っているのは2つのシナリオです

1)ユーザーは新規登録できます

2)ログインしたユーザー(current_user)は、新しいユーザーを作成できます。ログインしたユーザーが新しいユーザーを作成するときに、新しく作成したユーザーに送信される確認メールに自分のメールを追加できるようにしたい

新規登録ユーザーへの電子メールで、ユーザーがログインしたユーザーによって作成された場合は、なんとかして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 !@user.email.nil? %>
   <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>

私は喜びもなくカスタムメーラーを行ったり来たりしてきました。誰かが私を助けてくれますか、私がここで見逃している簡単なことがあると確信しています。

詳細については(これが最善の方法ではないことはわかっていますが、デモ用に非常に簡単なアプリをまとめています)、ユーザーはメールアドレスを入力して新しい連絡先を作成します。電子メールアドレスがユーザーテーブルに存在しない場合、新しいユーザーが作成され、連絡先関係が作成されます(コントローラーのスニペット)。

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

1 に答える 1

4

カスタムメーラーを設定するには、このチュートリアルに従ってください。

config / initializers / devise.rb内:

config.mailer = "UserMailer".

app/mailersフォルダーにDeviseのメーラーを継承する新しいメーラーを作成します。

# 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

次に、デバイスのメーラービューを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
于 2012-11-22T14:25:30.797 に答える