新規アプリケーションの立ち上げ手順〜Ruby on Rails~

1.アプリケーションの作成・・任意のディレクトリをカレントディレクトリにし、ターミナルから作成

>  rails _6.0.0_ new appname -d mysql

2.データベースの作成

>  rails db:create

3.サーバーサイドの実装 ールーティングの設定ー

>   config/routes.rb

   Rails.applecation.routes.draw do

       get ‘posts’ to: ‘posts#index’

   end

 

4.コントローラーの設定と、アクションの指定

 

> % rails g controller コントローラー名

> class PostsController < ApplicationController

       def index

       end

    end

 

5.ビューの作成

 app/views/posts/index.html.erb を編集がする

  <h1>トップページ</h1>

  hello world

 

6.モデルの作成

 % rails g model モデル名

※コントローラー名は複数形、モデル名はそれに対応する単語の単数形になる。

> db/migrate/20xxxxxx_create/posts.rb が作成される

class CreatePosts < ActiveRecord::Migration[6.0]

  def change

    create_table :posts do |t|

      t.text :memo

      t.timestamps

    end

  end

end

 

6.2マイグレーションファイルの作成

> % rails db:migrate

 

7.データベースにデータを仮置して表示させる

  app/controller/posts_controller.rb

class PostsController < ApplicationController

  def index

    @posts = Post.all

  end

end

 

Postモデル、すなわちpostsテーブルからすべてのデータを取得し、インスタンス変数@postsに代入

all はActiveRecord すべてをデータを取得することが出来る

 

7.1ビューページを編集する

>  app/views/posts/index.html.erb

<h1>トップページ</h1>

<% @post.each do |post| %>

<div>

<%= post.memo %>

<%= post.created_at %>

</div>

<% end %>

 

*<% %> はブラウザ上に表示がされない

<%= %>はブラウザに表示される*

 

 

8.投稿ページへのルーティングを作成する

> config/routes.rb

Rails.application.routes.draw do

get ‘posts’, to: ‘posts#index’

get ‘posts/new’, to: ‘posts#new’

end

 

get はHTTPメソッド

’posts/new’というパスに、GETメソッドでリクエストが送られてきたとき、’posts#index’  postsコントローラーのindexアクションを呼び出す。という設定を意味しています。

 

 

9.投稿ページのためのアクションをコントローラーに記載する

> app/controller/posts_controller.rb

class PostController < ApplicationContoroller

def index

@posts = Post.all

end

 

def new

end

end

 

10.投稿ページへのリンクと、投稿ページの作成

> app/views/posts/index.html.erb

<h1>トップページ</h1>

<%= link_to "投稿ページ", '/posts/new'%>

<% @posts.each do |post|%>

  <div>

    <%= post.memo %>

    <%= post.created_at %>

  </div>

<% end %>

 

新規投稿ページヘのリンクを*link_to*のヘルパーメソッドを用いて指定

<%= link_to ‘リンクに表示する文字’, ‘リンク先のURL’ %>

 

/posts/new は新規投稿ページへのパスを意味します

 

> app/views/posts/new/html.erb

<h1>新規投稿ページ</h1>

<%= form_with url: '/posts', method: :post, local: true do |form| %>

  <%= form.text_field :memo %>

  <%= form.submit "投稿する" %>

<% end %>

 

form_with を用いてフォームを実装します

> <%= form_with url: 【送信するパス】, method: :【HTTPメソッド】, local: true do |form| %>

  <%= form.text_field :【送信する値の名前】 %>

  <%= form.submit 【送信ボタンに表示する文字】 %>

<% end %>

 

11.投稿するためのアクションをコントローラーに記載して、投稿できるようにする

 

app/controllers/posts_controller.rb

class PostsController < ApplicationController

  def index

    @posts = Post.all

  end

 

  def new

  end

 

  def create

    Post.create(memo: params[:memo])

  end

end

 

creatアクションを定義

createアクション内で、Postモデルが使用しているcreateメソッドは、テーブルにレコードを保存するための、ActiveRecordメソッドです。

 

createメソッド

モデル名.create(カラム名: 保存する値)

上記の保存カラムは、memoなので、キーは:memoになります。

キーに続けて、保存したい値に記述しているのは、params[:memo]

 

paramsには、フォームから送信された値がハッシュとして含まれていて、フォームのname属性の値がキーになっています

 

params

params[:name属性の値]

name属性を指定することで、その要素から送られて値が取得出来ます。

 

今回は、ヘルパーメソッドのform_withを使用し、フォーム部品を作成しているため、name属性に入るのは、memoという値になります。

 

app/views/posts/index.html.erb 内

<%= post.memo %> の部分

 

以上から、

Post.create(memo: params[:memo]) の記述は、

「postテーブルのmemoカラムに、name属性にmemoの値を持っているフォームから送信されたデータを保存する」ということがわかります。

 

12.投稿完了後の画面の作成

> app/views/posts/create.html.erb

<h1>投稿が完了しました</h1>

<%= link_to “トップページへ戻る”, ‘/posts’ %>

 

link_to を用いてトップページへリンクを設置