【发布时间】:2017-11-13 08:04:40
【问题描述】:
我在 Hartl 的 rails 教程的第 11 章,第 11.2.1 节邮件模板,密码重置邮件的预览工作正常,但 account_activation 预览没有。即使我没有对代码进行任何更改,错误实际上也发生了变化,这令人困惑。但是,我目前收到的错误是
NoMethodError in Rails::Mailers#preview
Showing /home/ubuntu/workspace/sample_app/app/views/user_mailer/account_activation.html.erb where line #3 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #3)
<h1>Sample App</h1>
<p>Hi <%=@user.name %>,</p>
<p>
Welcome to the Sample App! Click on the link below to activate your account:
这是我的 user_mailer.rb
class UserMailer < ApplicationMailer
def account_activation(user)
@user = user
mail to: user.email, subject: "Account activation"
end
def account_activation
@greeting = "Hi"
mail to: "to@example.org"
end
def password_reset
@greeting = "Hi"
mail to: "to@example.org"
end
end
account_activations_controller.rb(本教程中尚未指定代码)
class AccountActivationsController < ApplicationController
end
以及错误account_activation.html.erb的来源
<h1>Sample App</h1>
<p>Hi <%=@user.name %>,</p>
<p>
Welcome to the Sample App! Click on the link below to activate your account:
</p>
<%= link_to "Activate", edit_account_activation_url(@user.activation_token,
email: @user.email) %>
它似乎无法识别用户的姓名。为什么会这样? (注意:所有代码都是从教程中复制的,所以我不知道错误的原因) 谢谢。
编辑:根据评论,确实有 2 个 account_activation 方法。我已经删除了第二个并保留了第一个。现在错误已变为参数错误。
ArgumentError in Rails::MailersController#preview
wrong number of arguments (given 0, expected 1)
def account_activation(user)
@user = user
mail to: user.email, subject: "Account activation"
end
这个方法好像用在下面的文件中,不带参数。
/sample_app/test/mailers/previews/user_mailer_preview.rb
class UserMailerPreview < ActionMailer::Preview
# Preview this email at http://localhost:3000/rails/mailers/user_mailer/account_activation
def account_activation
user = User.first
user.activation_token = User.new_token
UserMailer.account_activation(user)
UserMailer.account_activation
end
# Preview this email at http://localhost:3000/rails/mailers/user_mailer/password_reset
def password_reset
UserMailer.password_reset
end
end
【问题讨论】:
标签: ruby-on-rails ruby railstutorial.org