我有点卡住,需要一些帮助!发送电子邮件给所有注册用户
我创建了一个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