0

私のuser_mailer.rb:

class UserMailer < ActionMailer::Base
  default :from => "notifications@example.com"
  def welcome_email(user)
    @user = user
    @url  = "http://example.com/login"
    mail(:to => user.email,:subject => "Welcome to My Awesome Site") do |format|
      format.html
    end
  end
end

そして、これは私の user_mailer.html.erb がどのように見えるかです:

<!DOCTYPE html>
<html>
  <body>   
    <%= yield %> 
  </body>
</html>

user_mailer.html.erb で何にアクセスできますか。ここでアクセスできるようにするには、どこで環境変数を定義する必要がありますか?

4

2 に答える 2

1

ここから例を挙げたと思いますか?

user_mailer.html.erbビューとuser_mailer.rbそのコントローラーのように扱うことができます。したがって、インスタンス変数を定義した場合は@users、それをメールで使用できます。リンクの例に従って:

user_mailer.html.erb

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
  </head>
  <body>
    <h1>Welcome to example.com, <%= @user.name %></h1>
    <p>
      You have successfully signed up to example.com,
      your username is: <%= @user.login %>.<br/>
    </p>
    <p>
      To login to the site, just follow this link: <%= @url %>.
    </p>
    <p>Thanks for joining and have a great day!</p>
  </body>
</html>

ヘルパーを使用することもできるため、そのように URL をハードコーディングする理由はありません。代わりにsign_in_url(またはログイン パスに使用する任意のルート) を使用できます。

電子メールでは、 (so etc)something_urlではなく常に使用する必要があることに注意してください。something_pathroot_url

welcome_emailメソッドで変数を定義する必要があります。

def welcome_email(user)
  @user = user
  @time = Time.now
  @slogan = "My App's slogan"
  ...
  mail(:to => user.email,:subject => "Welcome to My Awesome Site") do |format|
    format.html
  end
end
于 2013-05-20T05:13:54.290 に答える
0

ビュー パーツ内の任意のインスタンス変数にアクセスできます。だからあなたの場合、

 @user and @url are accessible in user_mailer.html.erb
于 2013-05-20T06:01:51.793 に答える