NoMethodError (неопределенный метод `charset = 'для nil: NilClass): при отправке электронной почты с рельсами - PullRequest
0 голосов
/ 12 июня 2018

при попытке отправить письмо с помощью ruby ​​на рельсах я получаю следующую ошибку:

NoMethodError (undefined method `charset=' for nil:NilClass):

Мой код довольно прост (метод в Mailer получен из ApplicationMailer):

def task_assigned(user)
  @user = user
  @inboxurl = 'http://localhost:4200/main/tasks'
  @referenceurl = 'http://localhost:4200/main/tasks'
  mail(to: @user.email, subject: 'Task assigned',template_name: 'task_assigned_email')
end

И представление (task_assigned_email.html.erb):

<!DOCTYPE html>
<html>
<head>
  <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
  <h1>Welcome <%= @user.name %></h1>
  <p>
     a new tasks has been assigned to you.<br>
  </p>
  <p>
    To go to your Inbox, just follow this link: <%= @inboxurl %>.
  </p>
  <p>
    To go to straight to the referenced data, just follow this link: <%= @referenceurl %>.
  </p>
  <p>Have a great day!</p>
</body>
</html>

Я знаю, что это работало некоторое время назад.Я думаю, что сделал что-то, чтобы прекратить отправлять электронные письма, чтобы он не заполнил мой почтовый ящик во время тестирования - но не уверен.Сделал некоторые обновления в то же время.Уже несколько дней я пытаюсь выяснить, что может быть основной причиной этой проблемы, но сообщение об ошибке не дает мне никаких указаний.Я проверил настройки SMTP, они тоже выглядят нормально.

Есть идеи, как найти основную причину?Есть какие-нибудь журналы, которые могли бы мне помочь?

Спасибо, Майкл

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

измените свой HTML-файл на task_assigned.html.erb

0 голосов
/ 19 марта 2019

У меня была эта проблема, и это было потому, что я дал почтовику метод инициализации

class ReminderMailer < ApplicationMailer
  def initialize
    #stuff
  end
end

В моем случае это мне действительно не нужно, поэтому я удалил его, и все работает.Если вам нужно инициализировать, вероятно, нужно позвонить супер или что-то ...

0 голосов
/ 12 июня 2018

Можете ли вы попробовать заменить метатег этого

<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />

на

<meta content=`text/html`; charset=`UTF-8` http-equiv=`Content-Type` />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...