0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

railsチュートリアル第五章 Userコントローラ

Posted at

##ユーザー登録: 最初のステップ
この節では、レイアウトとルーティングの取り組みにおける頂点として、ユーザー登録ページへのルーティングを作成
2番目のコントローラを作成することになります。
これは、Webサイトでユーザー登録を行えるようにするための最初の重要な一歩となります

次の一歩であるユーザーのモデリングは第6章で行い、第7章でユーザー登録が完成。

###Userコントローラ
最初のコントローラであるStaticPagesコントローラを作成
2番目のコントローラであるUsersコントローラを作成
generateを実行して、現時点での要求である新規ユーザー用のユーザー登録ページ(スタブ)を持つ、最も簡単なコントローラを作成
Railsで好まれているRESTアーキテクチャの規約に従い、新規ユーザー用のアクションをnewを使う。
generate controllerの引数にnewを渡して、自動的にアクションを作成してみましょう。
####Usersコントローラの生成

ubuntu:~/environment/sample_app (filling-in-layout) $ rails generate controller Users new
Running via Spring preloader in process 4431
      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    scss
      create      app/assets/stylesheets/users.scss

new アクションを持つUsersコントローラと、スタブのユーザービューを作成します。

####newアクションを持つ最初のUsersコントローラ

class UsersController < ApplicationController

  def new
  end
end

####Users用の最初のnewアクション

<h1>Users#new</h1>
<p>Find me in app/views/users/new.html.erb</p>

####Userページ用の最初のテスト

require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest

  test "should get new" do
    get users_new_url
    assert_response :success
  end
end
ubuntu:~/environment/sample_app (filling-in-layout) $ rails t
Running via Spring preloader in process 3245
Started with run options --seed 838

  8/8: [==============================] 100% Time: 00:00:01, Time: 00:00:01

Finished in 1.31576s
8 tests, 17 assertions, 0 failures, 0 errors, 0 skips

####演習
1.users_new_urlではなくsignup_pathを使えるようにしてみてください。

require 'test_helper'

class UsersControllerTest < ActionDispatch::IntegrationTest
  test "should get new" do
    get signup_path
    assert_response :success
  end

end

2.先ほどの変更を加えたことにより、テストが red になったことを確認してください。

ubuntu:~/environment/sample_app (filling-in-layout) $ rails t
Running via Spring preloader in process 3790
Started with run options --seed 60200

ERROR["test_should_get_new", #<Minitest::Reporters::Suite:0x00005650d43b6368 @name="UsersControllerTest">, 1.309806750000007]
 test_should_get_new#UsersControllerTest (1.31s)
NameError:         NameError: undefined local variable or method `signup_path' for #<UsersControllerTest:0x00005650d43b28d0>
            test/controllers/users_controller_test.rb:5:in `block in <class:UsersControllerTest>'

  8/8: [==============================] 100% Time: 00:00:01, Time: 00:00:01

Finished in 1.39807s
8 tests, 16 assertions, 0 failures, 1 errors, 0 skips

NameError: undefined local variable or method `signup_path'
signup_pathがないらしい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?