Ruby on Rails速習実践ガイド chapter3
3-1-4 データベースの環境ごとの使い分け
データベースには3種類の環境がある。
それぞれやることに対応してデータベースも割り振られている。
環境の種類 | 環境システム名 | 用途 |
---|---|---|
開発環境 | development | 開発時の動作確認を行う |
テスト環境 | test | 自動テストを行う |
本番環境 | production | ユーザーが利用可能な形で稼働させる |
開発時はdevelopment環境とtest環境を使っていく。この二つのファイルはdb:createを実行した時に自動的に作成されるようになっている。
3-1-5 ビュー層を効率良く書くためにslimを使えるようにする(slimの使い方)
デフォルトではerbで行われているテンプレートエンジンをslimというテンプレートエンジンに変えると簡単にコードを書けるようになる。
slimの書き方
erbの書き方 | slimの書き方 |
---|---|
<% name %> | - name |
<%= name %> | = name |
#コメント | /コメント |
<p> こんにちは </p> | p こんにちは |
<a href='//example.com">image</a> | a href="//example.com"image |
<div class="profile name"> | .profile.name |
<div id="pam"> | #pam |
slimは慣れると便利なので慣れるまでは苦労しそうだ。
3-2-2 タスクモデルのひな形を作成する
・モデルを作成する
モデルを作成するにはrails g の後に作成したいものを記入する(今回はmodel)
$ rails g model Task name:string description:text
こうすることで
・Taskモデルができる
・name:string description:textのテーブルを作成できる設計図のマイグレーションファイルができる
・モデルの自動テスト用のファイルができる
テーブルを作るにはマイグレーションファイルをdb:migrateをするとテーブルが作られる。
3-3 コントローラーとビュー
・ルーティング
ルーティングはURLとHTTPメソッドを見てコントローラーの各アクションに割り振る。
URLの例 | HTTPメソッド | アクション名 | 機能名 | 役割 |
---|---|---|---|---|
/tasks | GET | index | 一覧表示 | 全タスクを表示する |
/tasks/17 | GET | show | 詳細表示 | 特定のidのタスクを表示する |
/tasks/new | GET | new | 新規登録画面 | 新規登録画面を表示する |
/tasks | POST | create | 登録 | 登録処理を行う |
/tasks/17/edit | GET | edit | 編集画面 | 編集画面を表示する |
/tasks/17 | PATCH,PUT | update | 更新 | 更新処理を行う |
/tasks/17 | DELETE | destory | 削除 | 削除処理を行う |
HTTPメソッドは重要!!
・ルーティングを1つにまとめる方法
get 'tasks/index'
get 'tasks/show'
get 'tasks/new'
get 'tasks/edit'
上のルーティングをresourcesを使ってまとめる
resource :tasks
resourcesメソッドはindex,show,new,create,edit,update,destroyの7つのアクションを一つにまとめることができる
get "/" => "tasks#index"
root to: 'tasks#index'
またrailsの初期画面もroot toで指定するとそのアクションに連携したビューが初期画面になる。
・URLヘルパーメソッド
/tasks/newや/tasks/editなどもヘルパーメソッドに置き換えることができる
URLの例 | HTTPメソッド | URLパターン名 | URLヘルパーメソッド |
---|---|---|---|
/tasks | GET | tasks | tasks_path |
/tasks/17 | GET | task | task_path |
/tasks/new | GET | new_task | new_task_path |
/tasks | POST | tasks | tasks_path |
/tasks/17/edit | GET | edit_task | edit_task_path |
/tasks/17 | PATCH、PUT | task | task_path |
/tasks/17 | DELETE | task | task_path |
3-3-1-5 新規登録画面のビューを実装する
新規登録画面
h1 タスクの新規登録
.nav.justify-content-end
= link_to '一覧', tasks_path, class: 'nav-link'
=form_with model:@task,local:true do |f|
.form-group
=f.label :name
=f.text_field :name, class: 'form-control', id: 'task_name'
.form-group
=f.label :name
=f.text_area :description, rows: 5, class: 'form-control', id: 'task_description'
=f.submit nil, class: 'btn btn-primary'
form_withはフォームを作成するためのもの。フォームで必要なものをf.を使って記入していく。
・解説
.nav.justify-content-end:Bootstrapで用意されたコード
f.label :name :入力欄に対応するラベルを表示本来はnameだが日本語翻訳されているので名称という名前になる
=f.text_field :name:テキストを入れる場所
class: 'form-control:bootstrapに元々ついているクラス
3-3-1-6 登録アクションを実装する
def create
task = Task.new(task_params)
task.save!
redirect_to tasks_url, notice: "タスク「#{task.name}」を登録しました"
end
private
def task_params
params.require(:task).permit(:name,:description)
end
require(:task).permit(:name,:description)は「nameとdiscriptionの情報だけ許可して新しくtaskを作ります」という意味。paramsでその作ったパラメーターを取得する。
3-3-3 詳細表示機能を実装する
tasks/[タスクのid]はURLヘルパーメソッドを用いるとtask_path(task)と表すことができる。idはrailsの方で引数taskから自動的に判定されるようになっている。
3-3-3-2 詳細画面にタスクの属性情報を表示する
simple_format(h(@task.description),{},sanitize: false, wrapper_tag: "div")
descriptionのように説明が入る文章は長くなり改行する必要が出てくる。simple_formatを用いることで簡単に改行が行われる。