LoginSignup
0
0

More than 3 years have passed since last update.

Rails学習 1日目その3

Posted at

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 新規登録画面のビューを実装する

新規登録画面

app/views/tasks/new.html.slim
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 登録アクションを実装する

app/controllers/tasks_controller.rb
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を用いることで簡単に改行が行われる。

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