1
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 1 year has passed since last update.

ホーム画面とユーザーの紹介ページを作成する

Last updated at Posted at 2022-05-19

ルーティングを作成する

routes.rb
Rails.application.routes.draw do
  get 'user/:id',               to: 'user#show'

end

コントローラーを設定する

users_controller.rb
class UsersController < ApplicationController
  def show
  end
end

データベースの中にuserテーブルとその中身があるのかを確認

**********@mbp ****** % mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.28 Homebrew

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
+---------------------------+
8 rows in set (0.03 sec)

mysql> show tables;
ERROR 1046 (3D000): No database selected
mysql> use garden_development
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------------------+
| Tables_in_garden_development |
+------------------------------+
| users                        |
+------------------------------+
1 row in set (0.00 sec)

mysql> select * from users;
+----+--------------------+
| id | name               |
+----+--------------------+
| 60 | ブイゼル           |
| 61 | あ           |
| 62 | あ     |
| 63 | あ       |
| 64 | あ                 |
| 65 | あ       |
| 66 | あ                 |
| 67 | あ                 |
| 68 | あ                 |
| 69 | い                 |
| 70 | あ                 |
| 71 | あ                 |
| 72 | ブイゼル           |
| 73 | ブイゼル           |
| 74 | ブイゼル           |
| 75 | ブイゼル           |
| 76 | 早起き             |
| 77 | a                 |
| 78 | あ       |
+----+--------------------+
19 rows in set (0.01 sec)

usersテーブルはあった。中身も確認

Routing Error

No route matches [GET] "/users/60"

ルーティングがない

routes.rb
Rails.application.routes.draw do
  get 'users/:id',               to: 'user#show'
end

Routing Error

uninitialized constant UserController Object.const_get(camel_cased_word) ^^^^^^^^^^ Did you mean? UsersController raise MissingController.new(error.message, error.name) ^^^^^
ルーティングの設定がおかしいのに気が付く。
もし会っているのならばNo template for interactive requestが表示されるはずだ。
uninitialized constant UserController ,usersController raise MissingControllerでなんとなくコントローラー名が間違っていることに気が付く。

users_controller.rb
Rails.application.routes.draw do
  get 'users/:id',               to: 'user#show'
end
users_controller.rb
Rails.application.routes.draw do
  get 'users/:id',               to: 'users#show'
end

sが書かれていなかった。
成功!

No template for interactive request

UsersController#show is missing a template for request formats: text/html

show.htmlを作らなければならない。

show.html
<!DOCTYPE html>
<html class="client-nojs" lang="ja" dir="ltr">
<head>
  <meta charset="UTF-8"/>
  <link rel="stylesheet" href="index.scss">
  <title>課題 新規登録ページ</title>
</head>
<body class="abcd">
<div class="edfg">
  <div>ユーザー紹介</div>
  <div>
    <%= @user %>
  </div>
  <div>
  </div>

</div>
<footer id="footer"></footer>
</body>
</html>

@userインスタンス変数を設定する

user_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find_by(id: params[:id])
  end
end

これで:idを基にユーザーを探せるはず。
これでどうだ。

ユーザー紹介 #User:0x0000000110cecc30 と表示された。

何かコントローラか何かで不具合があったと思われる。

解決 

インスタンス変数@userのどの属性を表示すればいいか分からなかっただけだった。

show.html
.
.
.
   <div>
    <%= @user.neme %>
   </div>
.
.
.

name属性を付け加えればよかった。
成功!

これだけだと何かひもじいので

progateで勉強した。
create_atをつけてやればいいかなと思って試してみる
一応my_sqlのカラムには存在はしない

show.html
   <div>
    <%= @user.create_at %>
   </div>

NoMethodError in Users#showが表示されたやはりcreate_atでは表示はされない。
新しくカラムを追加しなければならないらしい。
今はまだmy_sqlでのカラムの追加を知らないのでこれから学ぶことがいっぱいだ。
またHTML/CSSに関する基礎知識も知らないので頑張りたい。

ホーム画面を作ってみる

ルーティングを設定する

routes.rb
Rails.application.routes.draw do
  get '/',                       to: 'home#top'
  get 'users/:id',               to: 'users#show'
end
home_controller.rb
class HomeController < ApplicationController
  def top
  end
end
top.html
<!DOCTYPE html>
<html class="client-nojs" lang="ja" dir="ltr">
<head>
  <meta charset="UTF-8"/>
  <link rel="stylesheet" href="index.scss">
  <title>課題 新規登録ページ</title>
</head>
<body class="abcd">
<div class="edfg">
  <div>アプリを始めよう!</div>
</div>
<footer id="footer"></footer>
</body>

SyntaxError

/Users/***///app/controllers/home_controller.rb:1: class/module name must be CONSTANT
class homeController < ApplicationController
constant 定数
name must be CONSTANTは大文字にしろと言う意味だろうか?
そうと察して

home_controller.rb
class HomeController < ApplicationController
.
.
.
end

にしてみた。
成功!

1
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
1
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?