らくだ🐫にもできるRailsチュートリアル|5.4(と5.5)
5.4 ユーザー登録: 最初のステップ
ユーザー登録ページを作っていく
5.4.1 Usersコントローラ
新規ユーザー用の登録ページを作る
→Usersコントローラを作成
→newアクションを引数にしてgenerateを実行
(2.1でやったRESTアーキテクチャの規約に合わせる)
スタブとはなんぞ
スタブ→使い残し、半券、切り株などの意味
未完成の機能の代用になるもの、テスト用の仮のパーツ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ rails generate controller Users new Running via Spring preloader in process 4173 create app/controllers/users_controller.rb route get 'users/new' invoke erb create app/views/users create app/views/users/new.html.erb invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/users.coffee invoke scss create app/assets/stylesheets/users.scss #引数に設定したnewアクションに対応するアクション・ルート・viewも自動的に生成されている |
演習
- 表 5.1を参考にしながらリスト 5.41を変更し、users_new_urlではなくsignup_pathを使えるようにしてみてください。
- 先ほどの変更を加えたことにより、テストが redになったことを確認してください。なお、この演習はテスト駆動開発 (コラム 3.3) で説明した red/green のリズムを作ることを目的としています。このテストは次の5.4.2で greenになるよう修正します。
1 2 3 4 5 6 7 8 9 10 |
#1. Rails.application.routes.draw do root 'static_pages#home' get '/help', to:'static_pages#help' get '/about', to:'static_pages#about' get '/contact', to:'static_pages#contact' get '/signup', to:'users#new' end |
1 2 3 4 5 6 7 8 9 10 11 |
#2. ERROR["test_should_get_new", UsersControllerTest, 0.40452832200026023] test_should_get_new#UsersControllerTest (0.40s) NameError: NameError: undefined local variable or method `users_new_url' for #<UsersControllerTest:0x0000000005f2d898> #`users_new_url'は未定義的なエラーメッセージ test/controllers/users_controller_test.rb:5:in `block in <class:UsersControllerTest>' 7/7: [==============================================] 100% Time: 00:00:00, Time: 00:00:00 Finished in 0.43794s 7 tests, 16 assertions, 0 failures, 1 errors, 0 skips |
ここからテストが通るようにコードを修正していく
5.4.2 ユーザー登録用URL
ユーザー登録用のページへのリンクが/signupになるようにルートを追加
(先ほどの演習1の内容)
→合わせてテストも修正
1 2 3 4 5 6 7 8 9 10 11 12 |
require 'test_helper' class UsersControllerTest < ActionDispatch::IntegrationTest test "should get new" do #この行↓を消して get users_new_url #この行↓に書き換え get signup_path assert_response :success end end |
本文に沿って
home.html.erbにあるSign up now!のリンクにsignup_pathを追加
new.html.erbを編集
演習
- もしまだ5.4.1.1の演習に取り掛かっていなければ、まずはリスト 5.41のように変更し、名前付きルートsignup_pathを使えるようにしてください。また、リスト 5.43で名前付きルートが使えるようになったので、現時点でテストが greenになっていることを確認してください。
- 先ほどのテストが正しく動いていることを確認するため、signupルートの部分をコメントアウトし、テスト redになることを確認してください。確認できたら、コメントアウトを解除して greenの状態に戻してください。
- リスト 5.32の統合テストにsignupページにアクセスするコードを追加してください (getメソッドを使います)。コードを追加したら実際にテストを実行し、結果が正しいことを確認してください。ヒント: リスト 5.36で紹介したfull_titleヘルパーを使ってみてください。
1.2.は動作確認のみなので省略
1 2 3 4 5 6 7 8 9 10 11 12 |
・ ・ ・ assert_select "a[href=?]", contact_path assert_select "a[href=?]", signup_path get contact_path assert_select "title", full_title("Contact") get signup_path assert_select "title", full_title("Sign up") end end |
5.5 最後に
まとめと次回予告&pushとデプロイとまとめ
まとめとか感想
Users登録ページの最初のステップと言う事で
controllerを作ったり名前付きルートを設定したりと、復習的な内容で短めにさっくり出来ました。
らくだ🐫にもできるRailsチュートリアルとは
「ド」が付く素人のらくだ🐫が勉強するRailsチュートリアルの学習記録です。
自分用に記録していますが、お役に立つことがあれば幸いです。
調べたとはいえらくだ🐫なりの解釈や説明が含まれます。間違っている部分もあるかと思います。そんな所は教えて頂けますと幸いなのですが、このブログにはコメント機能がありません💧お手数おかけしますがTwitterなどでご連絡いただければ幸いです