2012-02-15 12 views
6

私は自分のレールアプリの電子メールを作成しています。今私が電子メールを見るために知っている唯一の方法は、それを私に送ることです。 「views」フォルダの下の「notifications」フォルダにある「daily_summary.html.haml」をブラウザでレンダリングするにはどうすればよいですか?レールでブラウザの電子メールビューを表示する方法

match 'notifications' => 'notifications/daily_summary' 

をしかし、私は物事のコントローラ/アクション側を処理する方法がわからない:私はちょうどルートを追加する必要があります考えていました。

+1

[Railsで電子メールをプレビューするにはどうすればいいですか?](0120-17753-03) –

答えて

1

actionmailer_extensionsをご覧ください。 ActionMailerは、送信する電子メールを.emlファイルとしてディスクに書き込みます。これはあなたの目的のために十分かもしれません(新しいファイルの出力ディレクトリを監視し、あなたの好みの電子メールクライアントで開くためのスクリプトを設定するだけです)、または宝石をフォークして直接変更することもできます.htmlファイルを開き、代わりにブラウザで開きます。

希望に役立ちます!

8

あなたが探しているものとまったく同じように聞こえるLetter Openerという宝石があります。電子メールメッセージを送信するのではなく、ブラウザでプレビューします。私はそれを自分で使っていません。それがうまくいくなら、私はそれについて聞いてみたいです!

https://github.com/ryanb/letter_opener

がありメールビューアと呼ばれる別のものだが、それを積極的にかなりの時間で開発されていません。おそらくより良い明確な操縦する:

https://github.com/37signals/mail_view

+0

レターオープナーが動作しているようです。唯一のことは、 'rich.html'の代わりに 'plain.html'バージョンの電子メールを開いていることです(プレーンは私の電子メールのテキストバージョンとhtmlバージョンの豊富に対応しているようです)。どのように私はこれを変更することができる任意のアイデア? – John

+0

'deliver'ブロック内で、' text_part'ブロックと 'html_part'ブロックの両方を指定することができます。そして、あなたはhtml_partブロックの 'content_type'を' 'text/html''にセットする必要があります。それが動作するかどうかを確認します。 –

+0

私はここで少し知らないです。 。これらのブロックはどこにありますか?content_typeはどこで設定できますか? – John

10

をRailsの4.1、電子メールのプレビューがネイティブなので。

test/mailers/previews/ 

クラスはMail::Messageオブジェクトを返すActionMailer::Preview

class WeeklyReportPreview < ActionMailer::Preview 
    def weekly_report 
     WeeklyReport.weekly_report(User.first) 
    end 
end 

書き込み方法を拡張する必要があります: あなたがする必要があるのは、このディレクトリにクラスを作成することです。彼らはこのURLを使用して、開発環境でアクセスできます。私の場合は

http://localhost:3000/rails/mailers/[preview_class_name]/[method_name] 

http://localhost:3000/rails/mailers/weekly_report/weekly_report 

詳細情報はRailsの3のために宝石が今そこにあるActionMailer API documentation

+0

ここに終わる誰のために - 私はあなたが実際に仕様/メーラーのテストを持っている場合は、テスト/メーラーなどでプレビューを作成する多くの参照があるという事実によって追跡されている...そうでなければ治療を働く! – Ben

1

で見つけることができ、 mail_view、これはRails 4.1に含まれていました。ここにset-upへのリンクがあります。それは非常に簡単です。

1)は、Gemfileに追加:

gem 'mail_view', :git => https://github.com/basecamp/mail_view.git' 
# or 
gem "mail_view", "~> 2.0.4" 

2)routes.rbをして:

# config/routes.rb 
if Rails.env.development? 
    mount MailPreview => 'mail_view' 
end 

3)をMailPreviewモデルを作成します。この中

# app/mailers/mail_preview.rb or lib/mail_preview.rb 
class MailPreview < MailView 
... 
def forgot_password 
    user = Struct.new(:email, :name).new('[email protected]', 'Jill Smith') 
    mail = UserMailer.forgot_password(user) 
end 
end 

をモデルには任意のメソッドの名前を付けることができますが、それらはUserMailerメソッドに対応していることが理にかなっています。

4.)を表示するには、/mail_viewにMailPreviewのすべてのメソッドのリストを参照してください。 1つをクリックすると、ブラウザにHTMLプレビューが表示されます。

関連する問題