質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Ruby

    9172questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8577questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 5

    2960questions

何故か引数の数が合わない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 202

Yaiba184

score 86

railsチュートリアルの12.2.2をやっていたら、こんなエラーが出ました。

Error:
UserMailerTest#test_password_reset:
ArgumentError: wrong number of arguments (given 1, expected 0)
    app/mailers/user_mailer.rb:8:in `password_reset'
    test/mailers/user_mailer_test.rb:21:in `block in <class:UserMailerTest>'

コードがこちらです。
どこが間違っているのかわかった方、教えていただけると幸いです。もう二、三日試行錯誤しても治らず悩んでいて全く進みません

User_maller.rb:

class UserMailer < ApplicationMailer

  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end

  def password_reset
    @user = user
    mail to: user.email, subject: "Password reset"
  end
end
user_maller_test.rb:

require 'test_helper'

class UserMailerTest < ActionMailer::TestCase

  test "account_activation" do
    user = users(:michael)
    user.activation_token = User.new_token
    mail = UserMailer.account_activation(user)
    assert_equal "Account activation", mail.subject
    assert_equal [user.email], mail.to
    assert_equal ["noreply@example.com"], mail.from
    assert_match user.name,               mail.body.encoded
    assert_match user.activation_token,   mail.body.encoded
    assert_match CGI.escape(user.email),  mail.body.encoded
  end

  test "password_reset" do
    user = users(:michael)
    user.reset_token = User.new_token
    mail = UserMailer.password_reset(user)
    assert_equal "Password reset", mail.subject
    assert_equal [user.email], mail.to
    assert_equal ["noreply@example.com"], mail.from
    assert_match user.reset_token,        mail.body.encoded
    assert_match CGI.escape(user.email),  mail.body.encoded
  end
end
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

def password_reset

仮引数がない

おそらく

def password_reset(user)
  @user = user
  mail to: user.email, subject: "Password reset"
end


が正しいかと

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/14 21:05 編集

    回答ありがとうございます。
    それに変えてみましたが、わけわからんエラーコード大量に出ました。
    どうやら違ったみたいです。
    一応そのエラーも載せます。

    Failure:
    UserMailerTest#test_password_reset
    [test/mailers/user_mailer_test.rb:24]:
    Expected /GBoRxjg3Giy25tVAO8TBpQ/ to match # encoding: US-ASCII
    "\r\n----==_mimepart_5b72c53c32b15_21b43fb4dbc066b83846\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: base64\r\n\r\nCgrjg5Hjgrnjg6/jg7zjg4njgpLlho3oqK3lrprjgZnjgovjgZ/jgoHjga7j\r\ng6rjg7Pjgq86CiAgaHR0cDovL2V4YW1wbGUuY29tL3Bhc3N3b3JkX3Jlc2V0\r\ncy9HQm9SeGpnM0dpeTI1dFZBTzhUQnBRL2VkaXQ/ZW1haWw9bWljaGFlbCU0\r\nMGV4YW1wbGUuY29tCgoy5pmC6ZaT57WM44Gk44Go44GT44Gu44Oq44Oz44Kv\r\n44Gv54Sh5Yq544Gr44Gq44KK44G+44GZ44CCCgoK44KC44GX44GC44Gq44Gf\r\n44GM44OR44K544Ov44O844OJ44Gu5YaN6Kit5a6a44KS55Sz6KuL44GX44Gm\r\n44GE44Gq44GE44Gu44Gr44KC6Zai44KP44KJ44Ga44GT44Gu44Oh44O844Or\r\n44GM5bGK44GE44Gf5aC05ZCI44Gv44GT44Gu44Oh44O844Or44KS54Sh6KaW\r\n44GX44Gm44GP44Gg44GV44GE44CCCuOBguOBquOBn+OBruODkeOCueODr+OD\r\nvOODieOBr+OBneOBruOBvuOBvuOBp+OBmeOAggoK\r\n\r\n----==_mimepart_5b72c53c32b15_21b43fb4dbc066b83846\r\nContent-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: base64\r\n\r\nPCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgaHR0\r\ncC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo\r\nYXJzZXQ9dXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIEVtYWlsIHN0\r\neWxlcyBuZWVkIHRvIGJlIGlubGluZSAqLwogICAgPC9zdHlsZT4KICA8L2hl\r\nYWQ+CgogIDxib2R5PgogICAgPGgxPuODkeOCueODr+ODvOODieOCkuWGjeio\r\nreWumuOBmeOCizwvaDE+Cgo8cD7jg5Hjgrnjg6/jg7zjg4njgpLlho3oqK3l\r\nrprjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq86PC9wPgoKPGEgaHJlZj0iaHR0\r\ncDovL2V4YW1wbGUuY29tL3Bhc3N3b3JkX3Jlc2V0cy9HQm9SeGpnM0dpeTI1\r\ndFZBTzhUQnBRL2VkaXQ/ZW1haWw9bWljaGFlbCU0MGV4YW1wbGUuY29tIj5S\r\nZXNldCBwYXNzd29yZDwvYT4KCjxwPjLmmYLplpPntYzjgaTjgajjgZPjga7j\r\ng6rjg7Pjgq/jga/nhKHlirnjgavjgarjgorjgb7jgZnjgII8L3A+Cgo8cD4K\r\nICDjgoLjgZfjgYLjgarjgZ/jgYzjg5Hjgrnjg6/jg7zjg4njga7lho3oqK3l\r\nrprjgpLnlLPoq4vjgZfjgabjgYTjgarjgYTjga7jgavjgoLplqLjgo/jgonj\r\ngZrjgZPjga7jg6Hjg7zjg6vjgYzlsYrjgYTjgZ/loLTlkIjjga/jgZPjga7j\r\ng6Hjg7zjg6vjgpLnhKHoppbjgZfjgabjgY/jgaDjgZXjgYTjgIIKICDjgYLj\r\ngarjgZ/jga7jg5Hjgrnjg6/jg7zjg4njga/jgZ3jga7jgb7jgb7jgafjgZnj\r\ngIIKPC9wPgoKICA8L2JvZHk+CjwvaHRtbD4K\r\n\r\n----==_mimepart_5b72c53c32b15_21b43fb4dbc066b83846--\r\n".

    キャンセル

  • 2018/08/14 21:28

    railsチュートリアルのバグに近い挙動ですね
    余計なカスタマイズをやめてpassword_reset.text.erbを原文通り英語のみにしてください

    キャンセル

  • 2018/08/14 21:33

    治りました!ありがとうございます!!!!!
    文字コードに原因があったんですね勉強になります

    キャンセル

同じタグがついた質問を見る

  • Ruby

    9172questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8577questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Ruby on Rails 5

    2960questions