我有點卡住,需要一些幫助!發送電子郵件給所有註冊用戶
我創建了一個UserMailer並試圖傳遞一個方法,在該方法中我可以向所有註冊用戶發送一封電子郵件。我將它發送給所有註冊用戶,但不能附加主題和內容。主題和內容都使用表單在通訊模型中創建。如果我試圖在UserMailer mail to: emails, subject: newsletter.subject, content: newsletter.content
上傳遞它,它將返回一個錯誤。
如果我將它作爲波紋管,它會返回... NoMethodError in Newsletters#deliver
... undefined method 'subject'for nil:NilClass
...。在視圖頁面中。
任何想法,我可能會失蹤?先謝謝你!!
模型協會是:
user.rb的has_many:通訊
newsletter.rb belongs_to的:用戶
class UserMailer < ApplicationMailer
default from: ‘[email protected]'
def newsletter(users_email)
@users = User.all
emails = @users.collect(&:email).join(", ")
mail(to: emails, subject: 'My Newsletter')
end
class NewslettersController < InheritedResources::Base
def deliver
@newsletter = Newsletter.find params[:id]
UserMailer.newsletter(@newsletter).deliver
flash[:notice] = "Newsletter currently being delivered."
redirect_to newsletters_url
end
Rails.application.routes.draw do
resources :newsletters do
member do
post :deliver
end
end
視圖頁面上的鏈接是<%= link_to "Deliver", deliver_newsletter_path(newsletter), :confirm => 'Are you sure?', :method => :post %>
而且在查看頁面:
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1>Helo <%= @users.name %></h1>
<p>
Subject <%= @newsletter.subject %> <br>
</p>
<p>
Subject <%= @newsletter.content %> <br>
</p>
<p>
.<br>
</p>
</body>
</html>
哇,真是那麼簡單!!!謝謝@iceman !!!唯一的是用戶名不會出現在電子郵件中,我在查看頁面上使用了這個名稱'<%= @ users.name%>'...任何想法? – Theopap
'@ users'是一個'Users'數組,所以這個變量沒有名字。由於您要向所有用戶發送相同的電子郵件,而不是騎自行車通過用戶列表併發送單個電子郵件,因此您不能在該電子郵件中輸入名稱。 – Iceman