Доступ к current_user в почтовом уведомлении почтового ящика
Я пытаюсь напечатать имя пользователя в почтовом шаблоне, который был создан через rails g mailboxer: views.
Всякий раз, когда я пытаюсь вызвать метод, возникает "метод или переменная current_user not found", хотя публичные методы называются User.Я делаю печать.
Вот мнение
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<h1>You have a new reply from <%= current_user.name %>: <%= @subject %></h1>
<blockquote>
<p>
<%= raw @message.body %>
</p>
</blockquote>
<p>
Visit your inbox for more info.
</p>
</body>
</html>
И модель
class ConversationMessage
include ActiveModel::Model
include Sanitizable
# Attributes
attr_accessor :sender, :body, :conversation
# Validations
validates_presence_of :body
# Sanitize contenteditable attributes
sanitize_html :body
def save
if valid?
ApplicationRecord.transaction do
# In a transaction, as mailboxer performs many inserts
sender.reply_to_conversation(conversation, body)
end
end
end
def mailbox_full_name
full_name
end
end
И mailboxer.rb
Mailboxer.setup do |config|
#Configures if you application uses or not email sending for Notifications and Messages
config.uses_emails = true
#Configures the default from for emails sent for Messages and Notifications
config.default_from = Settings.env.mailer.sender
#Configures the methods needed by mailboxer
config.email_method = :mailbox_email
config.name_method = :mailbox_full_name
#Configures if you use or not a search engine and which one you are using
#Supported engines: [:solr,:sphinx]
config.search_enabled = false
config.search_engine = :solr
#Configures maximum length of the message subject and body
config.subject_max_length = 255
config.body_max_length = 32000
end
Существует также проблема, которая используется для пользовательских методов mailbox_email и mailbox_name
module DeliveryMessage::Mailboxable
extend ActiveSupport::Concern
included do
acts_as_messageable
def mailbox_full_name
full_name
end
#Returning the email address of the model if an email should be sent for this object (Message or Notification).
#If no mail has to be sent, return nil.
def mailbox_email(object)
email
end
end
end
ОБНОВЛЕНИЕ: Это та же самая проблема, чем эта. Показывать имя пользователя в почтовом ящике почтового ящика в Rails
И это решается так же.
1 ответ
Решение
У вас нет доступа к помощникам контроллера из представления почтовой программы.
Вместо этого вам нужно использовать атрибуты @message
объект.
<h1>You have a new reply from <%= @message.sender.name %>: <%= @subject %></h1>