簡體   English   中英

rails 引擎郵件丟失模板

[英]rails engine mailer missing template

所以我正在研究一個 Rails 引擎並生成了一個郵件程序,它將我的觀點放入

app/
  views/ 
    my_engine/ 
      user_mailer/
        account_activation.html.erb
        account_activation.text.erb

配置虛擬應用程序以顯示我添加的預覽

測試/虛擬/配置/環境/development.rb

config.action_mailer.preview_path = MSearcher::Engine.root.join('test/mailers')

測試/郵件/預覽/my_engine/user_mailer_preview.rb

module MyEngine
    class UserMailerPreview < ActionMailer::Preview
        def account_activation
            User.first
            UserMailer.account_activation(user)
        end
    end
end

現在如果我創建我的郵件

/app/mailers/my_engine/user_mailer

module MyEngine
    class UserMailer < Application Mailer
        def account_activation(user)
            mail to: user.email, subject: "Account Activation"
        end
    end
end

有了這個,我可以導航到localhost:3000/rails/mailers/my_engine/users_mailer/account_activation

我在哪里得到錯誤

Template is missing
Missing template layouts/mailer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee]}. 
Searched in: * 
    "/home/me/workspace/rails/my_engine/test/dummy/app/views" * 
    "/home/me/workspace/rails/my_engine/app/views"

因此默認行為是在應位於的文件夾上方的文件夾中查找我的模板。 如何配置正確的行為?

我最終做的是告訴它在哪里可以找到布局

當我生成我的郵件時,它創建了一個默認布局

app/
  views/ 
    layouts
      my_engine/
        mailer.html.erb
        mailer.text.erb
    my_engine/ 
      user_mailer/
        account_activation.html.erb
        account_activation.text.erb

但是app/mailers/my_engine/application_mailer.rb 中的默認模板

module MyEngine
  class ApplicationMailer < ActionMailer::Base
    default from: 'from@example.com'
    layout 'mailer'
  end
end

這個布局真的應該是'my_engine/mailer'我不知道為什么 Rails 不自動這樣做,但這為我解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM