1

所以我有一個佈局2點郵件的操作:signup_emailchange_password軌道3負載不同的諧音

def signup_email(user, url) 
    @user = user 
    @url = url 
    mail(to:user.username, subject:"Welcome to Clubicity!", template_path: "mail_templates", template_name: "system") 
    end 

    def change_password(username,url) 
    @url = url 
    mail(to:username,subject:"Clubicity - password recovery", template_path: "mail_templates", template_name: "system") 
    end 

我設法獲得這2個動作的一個佈局,但是現在在這個佈局我需要渲染2個不同的部分,取決於什麼動作被稱爲,註冊或change_pwd ..

我看過RailsGuides和api.rubyonrails.org,他們只說模板。

請幫助這個。

回答

1

得到它使用郵件的佈局像這樣

def change_password(username,url) 
    @url = url 
    mail(to:username,subject:"Clubicity - password recovery") do |format| 
     format.html { render :layout => 'mail_templates/system'} 
    end 
    end 

    def signup_email(user, url) 
    @user = user 
    @url = url 
    mail(to:user.username, subject:"Welcome to Clubicity!") do |format| 
     format.html { render :layout => 'mail_templates/system'} 
    end 
    end 

,並在佈局只是把<%=%的收率>

和搖滾!

+0

因此,對於第一個操作,您的郵件佈局是app/views/layouts/mail_templates/system.html.erb, 您的郵件視圖是app/views/user_mailer/change_password.html.erb? – alex

+0

正好..所以我有一個完整的模板和郵件視圖加載到此佈局..除了change_password的路徑不是views/user_mailer /但意見/郵件/ change_password.html.erb – rmagnum2002

+0

謝謝,將使用您的方法: ) 只需更正<% yield %>至<%= yield %>即可。 – alex

0

所以,你想使用一個文件進行不同的操作。當然你必須在模板中定義動作。

我建議爲每個動作製作一個視圖文件。

對於使用一種佈局,只需將<%= render 'email_header' %>添加到頂部,並將<%= render 'email_footer' %>添加到每個視圖的底部。也可以用適當的標記使_email_header.html.erb_email_footer.html.erb

+0

對我來說看起來不太合適......我會等待另一個答案,如果沒有其他解決方案,我將不得不按照自己的方式來完成。謝謝你的任何方式。 – rmagnum2002