0
0

More than 3 years have passed since last update.

(Ruby on Rails6) データーベースの作成とビューへの表示

Posted at

マシンスペック/バージョン

・バージョン 10.15.3
・Ruby ruby 2.6.3p62
・Rails 6.0.3.2

まえがき

こちらの記事では、Ruby on Rails6 でのデーターベースの作成とビューへの表示を忘却録として記録します。もしも、データーベース の作成などで困っている方がいればお役に立てると嬉しいです。

準備

こちらでは、ディレクトリの作成から行います。
データーベースの作成は、後ほど記述しますので、ご存知の方は読み飛ばしても大丈夫です!

ディレクトリの作成

以下のコマンドを任意のディレクトリ先で入力してください。
また、herokuにデプロイを想定しているのでデーターベース(postgresql)を設定しています。

terminal
rails new ディレクトリ名 -TB --database=postgresql

(例)↓
rails new form_test -TB --database=postgresql

設定するデーターベース がなければ以下のコマンドでも問題ありません。

terminal
rails new ディレクトリ名

(例)↓
rails new form_test

※postgresql で設定すると、ブラウザ表示時にエラーになります。その処理は後ほど記述します。

ページの作成

先ほど生成したディレクトリ先に移動しページを作成しましょう。

terminal
cd ディレクトリ名

(例↓)
cd form_test
terminal
rails generate controller 任意の名前 index

(例)↓
rails generate controller Forms index

"index" は、作成意図で入力名を変更してください。
generate→g の省略コマンドでも問題ありません。
また、ディレクトリ名前は "Forms" のような複数形にすると後に管理しやすいです。

terminal
rails g controller 任意の名前 index

(例)↓
rails g controller Forms index

routesの設定

以下をroutesに設定すると http://localhost:3000/forms 設定されます。

config/routes
Rails.application.routes.draw do
  # get "任意名" => "任意の値#index"
    get "forms" => "forms#index"
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

ブラウザで確認

一度ブラウザで確認してみます。
ブラウザへの表示をコマンドを入力してください。

terminal
rails s
or
rails server

表示されましたか?

また、postgresql のディレクトリ作成で記述しましたが、エラーが出るかもしれません(私はエラーしました)
その際は以下のコマンドを入力してください。

terminal
rails db:create

エラーの原因は別記事で説明します。

データーベースを準備

ここからは、データベースの作成を行います。

データーベースを作成

terminal
rails g model データベース名 content:text
(例)↓
rails g model Forms content:text

データーベース名は、頭文字を "大文字" にすることと "複数形" にすると管理しやすいです。
省略をしていない↓でもOK

terminal
rails generate model データベース名 content:text
(例)↓
rails generate model Forms content:text

データーベースのマイグレーション

データベースの作成後は、マイグレーションをしてください。
忘れてしまうと、ブラウザで確認する際にエラーが発生します。

terminal
rails db:migrate

データーベースの投稿を追加

インスタンス化を行います。
この処理を行うには rails console と先に、コマンドに入力してください。

terminal
rails console

任意名 = データベース名.new(content: "今日からProgateでRailsの勉強するよー!")
任意名.save

(例)↓
form1 = Form.new(content: "test")
form1.save

余談ですが、ディレクトリ作成時に↓と入力した場合は "forms(formの複数形)" なので、データーベースの追加時には "form(単数形)" にすると良いです。

terminal
rails generate controller forms index

データーベースの投稿を保存

投稿を追加後は、saveをしてください。
これを行うことにより、投稿が保存されます。

terminal
任意名.save

(例)↓
form1.save

quit

quit は rails console を終了するコマンドです。
この処理を2~‥繰り返すと、複数の投稿を保存できます。

データーベースの投稿を取得

terminal
今回私は "ディレクトリ名 = データベース名.all" を使います。

ディレクトリ名 = データベース名.all
forms = Form.all
→全ての値を取得

ディレクトリ名[0]
forms[0]
→初めの値を取得

ディレクトリ名[0].content
forms[0].content
→初めの値(content)を取得

以上が、データベースの作成でした。次はビューに表示する作業を行います。

データベースの内容をビューに保存

コントロールの設定

controllerに、データベースの取り出しで使用した "ディレクトリ名 = データベース名.all" を設定することにより全ての投稿内容を取得できます。

また、Rubyでは "form" は "@form" のように @ を付けないといけません。

app/controllers/任意_controller.rb
class PostsController < ApplicationController
  def index
  # @ディレクトリ名 = データベース名.all
    @forms = Form.all
  end
end

ビューの設定とEach配列

app/views/任意/index.html.erb
<h1>Forms#index</h1>
<p>Find me in app/views/forms/index.html.erb</p>
 <% @ディレクトリ名.each do |form| %>
      <div>
     <%= ディレクトリ名の単数形.content %>
      </div>
  <% end %>

例↓

app/views/任意/index.html.erb
<h1>Forms#index</h1>
<p>Find me in app/views/forms/index.html.erb</p>
 <% @forms.each do |form| %>
      <div>
        <%= form.content %>
      </div>
 <% end %>

Eachによる繰り返し処理

app/views/任意/index.html.erb
 <% @forms.each do |form| %>
     処理
 <% end %>

each を使うことにより、繰り返しの処理を行うことができます。
また

app/views/任意/index.html.erb
<%= form.content %>

は、データーベースの "content" を表示させています。

そして、Rubyでは↓の表記の違いで異なる挙動が起こるので注意してください。
ここでは、データベースのcontentを表示させたいので <%= form.content %> と入力します。

app/views/任意/index.html.erb
<%= form.content %>
→文字列をビューへ表示(=が重要)

<% form.content %>
→文字列の結果をビュー表示しない

ブラウザで確認

rails_db-test.png
問題がなければ routes 先で、確認できます。
私はテストで test1 と test2 を表示させてみました。

以上のテストは、Githubで公開しています。
試してみたい方はダウンロードをしてみてください。

Github

あとがき

ここまで読んでいただき、ありがとうございます。
以上が、Ruby on Rails6 での データーベース作成とビューへの表示でした。
routesやcontrollerの設定が、複雑で少し疲れますがビューで表示されると嬉しいです。

参考リンク

書籍: たのしいRuby 第6版

私のリンク

また、Twitter・ポートフォリオのリンクがありますので、気になった方は
ぜひ繋がってください。プログラミング学習を共有できるフレンドが出来るととても嬉しいです。

Twitter
Portfolio
Github

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