Ruby on Rails でアプリケーションを新規作成する。
$ rails new アプリケーション名 -オプション名
- データベースに MySQL を使用する場合は、オプション名に
-d mysql
と記述する。
※ デフォルトは SQLite を使用している。
データベースを作成する。
$ rails db:create
ルーティングを生成する。
config/routes.rb
Rails.application.routes.draw do
[HTTPメソッド] '[URIパターン]', to: '[コントローラー名]#[アクション名]'
root to: 'コントローラー名#アクション名'
# ルートパス (get '/', to: '[コントローラー名]#[アクション名]') にリクエストする。
resources :コントローラー名, only: [:アクション名]
# "resources"メソッドを使用すると、指定したコントローラーの 7つのアクション (index,new,create,show,edit,update,destroy) のルーティングが設定される。
# "only"オプションを使用すると、7つのアクション全てではなく、指定しただけのアクションのルーティングが設定される。
end
-
HTTPメソッドの種類
- GET:ページを表示する時に使用する。
- POST:フォームからデータを送信して、登録する時に使用する。
- PUT:データを変更する時に使用する。
- DELETE:データを削除する時に使用する。
-
アプリケーションのルーティングを確認する時はターミナルで
$ rails routes
を実行する。 -
Prefix
-
Prefix名_path
と記述することで、リンク先等のパスとして扱える。
-
コントローラーを作成する。
$ rails g controller コントローラー名
- ルーティングから送られたリクエストに対応する7つのアクション
-
index
: -
new
: -
create
: -
show
: -
edit
: -
update
: -
destroy
:
-
モデルを作成する。
$rails g model モデル名
- マイグレーションファイルにテーブルに必要なカラムを記述する。
マイグレーションファイル.rb
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.型 :カラム名, null: false
# "null: false" は空のデータが登録できないようにする必須項目に付けるバリデーション (モデルファイルにも要記述)
t.timestamps
end
end
end
- 型の種類
-
integer
:数値 -
string
:文字列 -
text
:文字列(長文) -
boolean
:選択肢 -
datetime
:日付・時刻
-
- マイグレーションファイルに必要なカラムを記述したらマイグレーションをする。
$ rails db:migrate
- もし、マイグレーションした後にマイグレーションファイルの修正をする場合には、
$ rails db:rollback
を実行して、データベースから差し戻す必要がある。 - 現状 マイグレーションファイルがデータベースに適用されているか確認するには
$ rails db:migrate:status
を実行する。
データベースに一度 上げたテーブルの情報を追加・削除・変更するには…
-
$ rails g migration Addカラム名Toテーブル名 カラム名:型
という形で実行する。-
Addカラム名Toテーブル名
の部分は、単語の頭文字を大文字にして、スペースを開けずに記述する。
-
ヘルパーメソッド
.html
<%= link_to 'リンクに表示する文字', 'リンク先のURL' %>
ビューファイルにデータベースのテーブルに保存されている値を表示する。
- コントローラーでモデルからテーブルの値を取得する。
_controller.rb
class PostsController < ApplicationController
def アクション名
@変数名 = " ● ● ● "
# コントローラーでインスタンス変数を定義しておくと、ビューファイルで "<%= @変数名 %>" 呼び出すことができる。
@変数名 = モデル名.ActiveRecordクラスメソッド
# 取得したい値があるモデル名の ActiveRecord クラスメソッドを指定して、インスタンス変数に代入する。すると、ビューファイルで変数名を指定することで値を表示できる。
end
end
- ActiveRecord クラスメソッドの種類
-
all
:テーブルの全てのデータを取得する。 -
find(●)
:テーブルの中の特定のレコードを取得する。 -
new
:新しくレコードを生成する。 -
save
:特定のレコードに保存する。
-
- 取得した値をビューファイルに記述する。
.html
<%= @変数名.カラム名 %>
<!-- "find(●)" メソッドを指定して、特定のレコードを取得した場合は、代入した変数名に表示したいカラム名を記述する。 -->
<% @コントローラで代入したインスタンス変数名.each do |変数名| %>
<%= 変数名.カラム名 %>
<% end %>
<!-- "all" メソッドを指定して、複数のレコードを取得した場合は、Each文を利用してレコード 1つずつ取り出してから表示する。 -->
フォームを作成する。
ビューファイルにフォームを作成する。
.html
<%= form_with model: @コントローラでモデルに新しくレコードを生成する値を代入するインスタンス変数名, url: フォームを送信するコントローラの Createアクションの Prefix_path, local: true do |form| %>
<%= form.フォームのヘルパーメソッドの種類 :カラムの名前 %>
<% end %>
- " type="" " 属性の値の種類
-
type="text"
:テキストフォーム -
type="password"
:パスワードフォーム -
type="checkbox"
:チェックボックス -
type="radio"
:ラジオボタン -
type="submit"
:送信ボタン
-
ルーティングに送信ボタンを押した後のリクエスト先を記述する。
config/routes.rb
post '[URIパターン]', to: '[コントローラー名]#create'
# フォームからデータを送信して 登録する操作をするので、HTTPメソッドに "POST"
# データの投稿をするリクエストには、"Create" アクション
コントローラでテーブルにレコードを追加する。
_controller.rb
def create
モデル名.create(ストロングパラメータのメソッド名)
# モデルにレコードを追加する為の .create メソッド
# フォームから値を受け取る為にストロングパラメータを使用する。
end
private
def ストロングパラメータのメソッド名
params.require(:インスタンス変数名).permit(:フォームの "name" 属性の値)
# フォームから送信されてきた値の中で、指定されたフォームを許可する。
end