Windowsで始めるRuby on Rails入門【4.アプリケーション作成】

どうも、tatsuです!

この記事はWindows環境でのRuby on Railsの入門記事シリーズの1つとなります。

前回記事はコチラ↓↓

Windowsで始めるRuby on Rails入門【3.フォルダ構成】

2018.11.05

今回は第四回目として、一からアプリケーションを作成していきたいと思います。

アプリケーションの内容として、勉強メモを登録するアプリケーションという設定でいきましょう。

また、今回からプログラムの読み書きが増えるため、Rubyについて全く知らない方は以下の記事を見ておいてください。

Ruby on Railsで使う最低限のRuby入門

2018.11.14

新しくアプリケーションの雛形を作る

それではコマンドプロンプトから任意のフォルダに移動してアプリを作ります。
私は「C:\rails_project」フォルダにstudy_appというアプリを作りました。

cd C:\rails_project
rails new study_app -TB –database=postgresql
オプションの注意
「–database=postgresql」オプションですが、先頭は-(ハイフン)が2つになります。

1つにするとうまくいかないので注意してください。

作成できたら、Visual Studio Codeからstudy_appフォルダを開きます。
↓↓こんな感じですね。

database.ymlを編集する

そうしたらconfig/database.ymlを以下のように編集してください。
※コメントは全て削除しています。

default: &default
  adapter: postgresql
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: testuser
  password: 1234
  host: localhost
  timeout: 5000

development:
  <<: *default
  database: study_app_development

test:
  <<: *default
  database: study_app_test

production:
  <<: *default
  database: study_app_production
  username: study_app
  password: <%= ENV['STUDY_APP_DATABASE_PASSWORD'] %>

データベースにテーブルを作成する

database.ymlの編集が完了したら、コマンドプロンプトで以下のコマンドを実行します。

cd C:\rails_project\study_app
rails db:create

これでstudy_app_developmentデータベースが作成されたので、以前のようにA5でデータベースを追加しておきましょう。
追加の仕方を忘れてしまった方は、以下の記事を参考にしてください。

Windowsで始めるRuby on Rails入門【2.scaffold】

2018.10.18

接続確認

ここまでできたら、コマンドプロンプトから以下のコマンドを実行してください。

cd C:\rails_project\study_app
rails s

そして以下にブラウザからアクセスして、railsの画面が表示されればOKです。

http://localhost:3000

モデルを作成する

まずはモデルを作成し、そのモデルに対応するテーブルを作成します。

コマンドプロンプトで以下のコマンドを実行してください。

cd C:\rails_project\study_app
rails g model Memo title:string contents:text
rails db:migrate

これでMemoモデルとmemosテーブルが作成されました。

models/memo.rb

コントローラーを作成する

モデルができたので、次はコントローラーを作成します。

以下のコマンドを実行してください。

cd C:\rails_project\study_app
rails g controller memos

これでMemoモデルに対応したコントローラーが作成されました。

controllers/memos_controller.rb

routes.rbの編集

基本的なルーティングの設定がしたいため、config/routes.rbを開いてください。

以下のように編集します。

Rails.application.routes.draw do
  # root_toを設定することで、http://localhost:3000にアクセスした時の画面を設定することができる
  # 今回は一覧画面を設定
  root to:  'memos#index'

  # resources :memosとすることで、(index,show,new,create,edit,update,destroy)のルーティングを一括設定できる
  resources :memos
end

編集が完了したら、コマンドプロンプトで以下のコマンドを実行し、ルーティングができているか確認します。

cd C:\rails_project\study_app
rails routes

以下のようになっていたらOKです。

この中でVerbがGETになっているActionに関しては、同名のビューを作成する法則が一般的なため、以下の4Actionに対応するビューを作っていきましょう!

  • index ・・・ index.html.erb
  • new ・・・ new.html.erb
  • edit ・・・ edit.html.erb
  • show ・・・ show.html.erb

ビューを作成する

本記事では一覧画面(index.html.erb)と新規作成画面(new.html.erb)を作っていきます。

また、ビューを作ったらそれに対応するActionをコントローラーにも作ってあげる必要があるため、そちらもやっていきます。

一覧画面

views/memos配下にindex.html.erbというファイルを作成してください。

作成できたら、index.html.erbを以下のように編集してください。

<h1>メモ一覧画面</h1>

<%# link_toはリンクを生成する簡単な方法 %>
<%# link_to 表示文字, リンク先のパス(routesのPrefixに_pathを繋げた文字列) %>
<%= link_to "新しくメモを作成する", new_memo_path %>

<ul>
<%# @memosにはmemoが複数入っているためループして表示している %>
<% @memos .each do |memo| %>
    <li><%= memo.title%> <%= memo.updated_at %></li>
<% end %>
</ul>
補足
「<%# %>」で囲われた部分はコメントです。

「<%= %>」で囲われた部分はRubyプログラムです。(結果を出力する)

「<% %>」で囲われた部分はRubyプログラムです。(結果を出力しない)

 
また、memos_controller.rbを以下のように編集してください。

class MemosController < ApplicationController
    # index.html.erbに対応するアクション
    def index
        # 更新日時の降順でソートされた複数のMemoモデルを@memos変数に格納する
        @memos = Memo.all.order("updated_at desc")
    end
end

 
Memo.all.orderなどの意味は簡単に以下の記事で説明しています↓↓

Ruby on Railsで学ぶActiveRecord【CRUD】

2018.11.12

新規作成画面

views/memos配下にnew.html.erbというファイルを作成してください。

作成できたら、new.html.erbを以下のように編集してください。

<h1>メモ新規作成画面</h1>

<%= link_to "一覧へ戻る", memos_path %>

<%# form_withを使うと簡単に入力フォームを作ることができる %>
<%# form_with model: @モデル do |変数| %>
<%= form_with model: @memo do |f| %>
    <p>
        <%= f.text_field :title %>
    </p>
    <p>
        <%= f.text_area :contents %>
    </p>
    <p>
        <%= f.submit %>
    </p>
<% end %>

 
また、memos_controller.rbを以下のように編集してください。

class MemosController < ApplicationController
    # index.html.erbに対応するアクション
    def index
        # 更新日時の降順でソートされた複数のMemoモデルを@memos変数に格納する
        @memos = Memo.all.order("updated_at desc")
    end

    # new.html.erbに対応するアクション
    def new
        # 空のMemoモデルを@memo変数に格納する
        @memo = Memo.new
    end

    # new.html.erbから値を送信した際に呼ばれるアクション
    def create
        # ビューから渡されたパラメータを使ってMemoモデルを作り、memo変数に格納する
        memo = Memo.new(memo_params)
        # DBに保存する
        memo.save!
        # 一覧画面へ遷移する
        redirect_to memos_url
    end

    # privateと書いた後に書かれたメソッドは全てプライベートメソッドになる
    private

    # ビューから渡されたパラメータがMemoモデルに対応する形かどうかチェックするメソッド
    def memo_params
        params.require(:memo).permit(:title, :contents)
    end
end

現状確認

それでは一覧画面と新規作成画面がうまく作成できたかどうか確認しましょう!

サーバーが起動していない場合は以下のコマンドを実行してサーバーを起動してください。

cd C:\rails_project\study_app
rails s

サーバーが起動したらウェブブラウザから以下のURLへアクセスします。

http://localhost:3000

こんな画面が表示され、登録したデータが一覧に反映されていればOKです!

まとめ

今回は一覧画面と新規登録画面の作成まで行いました。

次回は残りの機能(表示・編集・削除)を作っていこうと思います!

それでは!

Windowsで始めるRuby on Rails入門【5.CRUD処理の実装】

2018.11.10

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です