私はこだわっていて、助けが必要です!登録されているすべてのユーザーに電子メールを送信
私は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>
これは簡単でした!!!ありがとうございました!唯一のことは、ユーザー名が電子メールに表示されないということです。ビューページでこれを使用しています。<%= @ users.name%> '...任意のアイデア??? – Theopap
'@ users'は' Users'の配列なので、その変数には名前はありません。あなたはユーザーリストを通ってサイクリングするのではなく、同じ電子メールをすべてのユーザーに送信しているので、個々の電子メールを送信するので、そこに名前を付けることはできません。 – Iceman