
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
序文
「Ruby on Rails 5 アプリケーションプログラミング」学習6日目。
近々新しいWebサービス公開予定。よろしくおねがいします。
GitHub
進捗
- 第3章
- 3.5 編集画面の作成(edit/updateアクション)
- 3.6 削除機能の確認(destroy アクション)
- 3.7 準備:本書で使用するデータベース
(学習時間:4時間)
コード実装部分
↓/app/controllers/cds_controller.rb
class CdsController < ApplicationController # 省略 # PATCH/PUT /cds/1 # PATCH/PUT /cds/1.json # _form.html.erbのフォームから # /cds/{キー値}にPATCHで入力データが渡されて発火する def update # フィルターに設定されている # set_cdメソッドにより@cdにはオブジェクトが取得されている # respond_toメソッドは指定されたフォーマットに応じて # 異なるテンプレートを呼び出す仕組み respond_to do |format| # 作成したオブジェクトを更新する # 成功したら if @cd.update(cd_params) # 指定されたフォーマットがHTMLなら # cds/{id値}にリダイレクトする # (@cdはオブジェクトのキー値と解釈される) # またオプションとしてデータを渡すことで # ビューテンプレートからローカル変数っぽく利用できる format.html { redirect_to @cd, notice: 'Cd was successfully updated.' } # 指定されたフォーマットがJSONなら # show.json.builderで新規作成されたデータをJSON形式で出力する # status:はステータスコード # location:はリソース位置のURLを表す format.json { render :show, status: :ok, location: @cd } # 失敗したら else # 指定されたフォーマットがHTMLなら # edit.html.erbを再描画する format.html { render :edit } # 指定されたフォーマットがJSONなら # エラー情報をJSON形式で書き出す # unprocessable_entityはデータを処理できなかったことを示す format.json { render json: @cd.errors, status: :unprocessable_entity } end end end # DELETE /cds/1 # DELETE /cds/1.json def destroy # フィルターに設定されている # set_cdメソッドにより@cdにはオブジェクトが取得されている # オブジェクトを削除する @cd.destroy # respond_toメソッドは指定されたフォーマットに応じて # 異なるテンプレートを呼び出す仕組み respond_to do |format| # 指定されたフォーマットがHTMLなら # ビューヘルパーを経由して/cdsへリダイレクトする format.html { redirect_to cds_url, notice: 'Cd was successfully destroyed.' } # 指定されたフォーマットがJSONなら # headメソッドを使用してステータスコードを返す # :no_contentはステータスコード204 No Contentを表す format.json { head :no_content } end end # 省略
↓/app/views/cds/edit.html.erb
<h1>Editing Cd</h1> <%# 部分テンプレートに@cdを渡してhtmlを描画する %> <%# _form.html.erbが部分テンプレートとして呼び出される %> <%= render 'form', cd: @cd %> <%= link_to 'Show', @cd %> | <%# cds_pathはビューヘルパーで %> <%# /cdsというパスを返す %> <%# ↓出力されるHTML %> <%# <a href="/cds">Back</a> %> <%= link_to 'Back', cds_path %>
↓/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base protect_from_forgery with: :exception # アノテーションの書き方 # #TODO: あとから実装 # #FIXME: 修正が必要 # #OPTIMIZE: コードの最適化が必要 # rails notes, rails notes:todo # などのコマンドで列挙できる end
実行結果
感想
scaffoldで自動出力されたソースコードへのコメント付け完了。
一応、それなりに理解できた気がする。
これからの学習で使うテストデータの準備が大変だった。
パラパラとこれからの内容を覗いてみると、割と気合い入れて取り組まないといけない感じだ。
がんばろう。
カロリーメイトください。
BGM
ソラまで / イズミカワソラ www.youtube.com