预览不工作,并不断得到不同的错误。
我的schema.rb看起来是这样的
ActiveRecord::Schema[7.0].define(version: 2022_12_31_110010) do
create_table "users", force: :cascade do |t|
t.string "emailadress"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
字符串
我的用户模型看起来像这样:
def send_daily
users = User.all(params[:id])
users.each. do |user|
UserMailer.send_daily_newsletter(user).deliver_now
end
redirect_to root_path, notice: 'Newsletter envoyée.'
end
型
我的User.Mailer看起来像这样:
class UserMailer < ApplicationMailer
def send_daily_newsletter(user)
@user = user
mail(to: @user.emailadress, subject: 'Votre fait historique quotidien')
end
end
型
我的邮件预览看起来像这样:
class UserMailerPreview < ActionMailer::Preview
def send_daily_newsletter
user = User.all # Ou tout autre utilisateur de votre choix pour la prévisualisation
UserMailer.send_daily_newsletter(user)
end
end
型
我不断得到以下错误:
undefined method `emailadress' for #<ActiveRecord::Relation [#<User id: 14, emailadress: "thomasandrieu1997@gmail.com", created_at: "2023-07-02 10:32:46.657533000 +0000", updated_at: "2023-07-02 10:32:46.657533000 +0000">, #<User id: 15, emailadress: "than1544@colorad.edu", created_at: "2023-07-02 11:43:17.121218000 +0000", updated_at: "2023-07-02 11:43:17.121218000 +0000">]>
型
你们有什么建议,我应该改变,以便能够在预览中正确地可视化电子邮件?谢谢你!
2条答案
按热度按时间mf98qq941#
你在
UserMailerPreview
中得到这个错误,因为你把User.all
分配给user
,这意味着你传递了一个ActiveRecord::Relation
,而不是一条记录给你的新闻通讯方法。在你的邮件中这一行是失败的:mail(to: @user.emailadress, ...
个要解决此问题,请更改
字符串
至
型
你需要解决的另一个问题是控制器中的方法(?):
型
User.all(params[:id])
引发错误,因为all
方法不接受参数。它应该只是User.all
,而没有params[:id]
。0dxa2lsx2#
您在以下行中遇到问题
字符串
在UserMailerPreview中,你有
user = User.all
,它会给予你所有的用户,现在如果你使用user.emailaddress
,它会引发错误,因为user是用户列表,该列表没有电子邮件地址。如果你循环通过它,那么你将得到电子邮件地址。
当你希望从数据库中得到多个结果时,最好使用复数作为变量名。
试着使用下面的方法来解决你的困惑
users = User.all