LoginSignup
1
0

More than 5 years have passed since last update.

2日目(2):Scaffoldを用いた掲示板作成

Last updated at Posted at 2019-03-06

2日目(1)のRuby認定試験を用いた確認のつづき

        

使用環境

ホストOS: Windows10 home
仮想環境OS: Ubuntu Bento/Bionic
Ruby:2.51
Rails:5.2.2
エディタ:nano

Scaffoldを用いたページ作成

Scaffoldとは

使用するデータの型などを指定して、作りたいものの土台(アプリケーションの雛形)を作成。
*Scaffoldは英で足場の意で、個人的には初段階用の便利簡単即席ツールという認識。

まずrails newあたりから、rails serverまで。

terminal
vagrant ssh

rails new sample -d mysql
cd sample
Gemfile
# Gemfile内のmini-racerをコメントアウト
bundle install
# bundlerというgemを使って、Gemfile記載内容に依ってgemをインストール
config/database.yml
# passwordを書き込む。
rails db:create
# database.ymlを読み込み,これに基づいてデータベースを作成
rails server

Scaffold使用段階

terminal
rails generate model User name:string email:string sex:integer age:integer address:integer attendance:integer opinion:text
# rails generate scaffold (コントローラ名/モデル名) カラム名1:データ型1 カラム名2:データ型 2 …

rails db:migrate

Railsドキュメントより(http://railsdoc.com/references/rake%20db:migrate)

rails db:migrateを実行
schema_migrationsテーブルを調べ、存在しなければ作成
db/migrateディレクトリ内のすべてのマイグレーションファイルを調べる
データベースの現在のバージョンと異なるバージョンがあった場合、データベースに適応
schema_migrationsテーブルの更新
```

この状態で、rails sで立ち上げ、localhost:3000/usersに接続し、データ入力しようとすると、
dc16e3b0540b67f8e5999a15dde5ad82.jpg

のように、integer型で指定したカラムに±∞の数値を入力できてしまう。
そこで

app/models/user.rb
class User < ApplicationRecord                                                                                                                                
  enum sex: { male: 0, female: 1 }
end
app/views/users/_form.html.erb
# ラジオボタンに変更
<div class"field">
<%= form.label :sex %>
<%= form.radio_button :sex, 'male' %>男性
<%= form.radio_button :sex, 'female' %>女性
</div>

とすると、性別がラジオボタンとなり、意図したデータ入力ができる。

その他のカラムも同様にラジオボタンに変更するなり出来る。

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