Hartl 's rails 튜토리얼, 11.2.1 절 메일러 템플릿의 ch11에 있습니다. 비밀번호 재설정 메일러에 대한 미리보기가 제대로 작동하지만 account_activation 미리보기가 작동하지 않습니다. 코드를 변경하지 않아도 실제로 오류가 변경되어 혼란 스러웠습니다. 나는 현재 수신하고있는 오류는 그러나 여기 Hartl 's rails tutorial ch11 : 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 <%[email protected] %>,</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: "[email protected]"
end
def password_reset
@greeting = "Hi"
mail to: "[email protected]"
end
end
account_activations_controller.rb
class AccountActivationsController < ApplicationController
end
입니다
및 오류 출처 account_activation.html.erb
<h1>Sample App</h1>
<p>Hi <%[email protected] %>,</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) %>
사용자의 이름을 인식하지 못하는 것처럼 보입니다. 왜 이럴 수 있니? (참고 : 모든 코드는 자습서에서 복사되므로 오류의 원인은 손실됩니다.) 감사합니다.
편집 : 의견에 따라 실제로 두 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
당신은 내가 이것을 알지 못했다. 그러나, 나는 지금 두 번째를 삭제하고 새로운 오류가 있습니다. ArgumentsError in Rails :: MailersController # 미리보기, 인자의 개수가 잘못됨 (주어진 0, 예상 된 1). 나머지 메소드 (def account_activation (user))는 인수가 필요합니다. 무엇이 실종 될 수 있니? – Owen
자세한 내용은 위의 편집을 참조하십시오. – Owen
그게 전부입니다. 나를 쳐다 보면서. 그것을 믿을 수 없다. 매번! 고맙습니다 – Owen