2016-06-12 56 views
1

我有一個模型用戶有多個引用「配置文件」。用戶可以有多個這些配置文件,並且每個配置文件都應該在電子郵件中產生特定的佈局。我們來看看配置文件AdminWorkerRails不同設計郵差佈局的相同動作

例如,在我的Devise確認控制器中,根據用戶的配置文件,我需要不同的佈局。例如,如果用戶有

  • 管理員配置文件:渲染管理模板
  • 工作者簡介:使工人模板
  • 兩種:渲染另一個模板(混合)

所以我不能設置一個郵寄者/控制器的佈局,但我需要將其設置在控制器操作中。假設我有一個幫助器layout_for_user(),它可以返回給定用戶的佈局名稱。我將如何使用它?例如與設計郵件?

class MyDeviseMailer < Devise::Mailer 
    def confirmation_instructions(record, token, options={}) 
     # whange layout based on `layout_for_user(record)` 
     @token = token 
     devise_mail(record, :confirmation_instructions, opts) 
    end 
end 

回答

0

我不得不重寫devise_mail方法

def confirmation_instructions 
    ... 
    @layout = find_layout_for_user(user) 
    devise_mail(user, :confirmation_instructions, opts) 
end 

# Override to include custom layouts 
def devise_mail(record, action, opts={}) 
    initialize_from_record(record) 
    mail(headers_for(action, opts)) do |format| 
    format.html { render layout: @layout } 
    end 
end 
相關問題