A

プログラミングの学習記録

【本日の学習内容:Rails課題2】

CRUD処理を実装したアプリの作成を進めました。

 

 

✅コントローラのアクションでデータを登録するための処理を書く

app/controllersの中にある users_controller.rb を開き、createアクションを記述する。

 

class UsersController < ApplicationController

  # 新規登録画面に対応するアクション

  def new

    # Userモデルのオブジェクトを作り、インスタンス変数に格納する

    @user = User.new

  end

 

  def create

    

  end

end

 

✅createアクションと一緒にStrong Parameterを記述する

Railsでは、データベースに予期せぬ値が登録されないように、登録する値を制限できる機能がある。それにより、「数字を登録するはずのところに文字列が登録される」といった不測の自体を防いでくれる。

そして、その機能を実現するのがStrong Parameter。

https://www.transnet.ne.jp/2016/05/18/rails%E5%88%9D%E5%AD%A6%E8%80%85%E3%82%B9%E3%83%88%E3%83%AD%E3%83%B3%E3%82%B0%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BCcolnr/

 

class UsersController < ApplicationController

  # 新規登録画面に対応するアクション

  def new

    # Userモデルのオブジェクトを作り、インスタンス変数に格納する

    @user = User.new

  end

 

  def create

    # String Parameter の記述

    # user_paramsメソッドで指定した条件を満たしたら、データベースのUserテーブルにデータが追加される

    User.create(user_params)

  end

 

  # UsersControllerの中でしか使わないメソッドはprivateのしたに記述する

  private

  def user_params

    # この記述により、 user のパラメータに紐づいた name や age しかデータベースに登録できないようになる

    params.require(:user).permit(:name, :age)

  end

 

 

end

 

 

なんとなく分かったけど、なんで:userとするのかはいまいち理解できず、、

 

✅ビューにcreate.html.erbを追加する

追加が終わったら、create.html.erbに以下のコードを記述する。

<h1>登録完了</h1>

<%= link_to "一覧画面へ", "/users" %>

 

ここまできたら、データベースにデータが登録できたか確認する。

自分が投稿したデータがテーブルに保存されていれば、投稿機能の実装は成功。

まずは、サーバーを立ち上げ、以下のURLにアクセスする。

http://localhost:3000/users/new

 

 

--一覧表示機能の実装--

✅一覧表示画面へのルーティングを書く

 

Rails.application.routes.draw do

  # 一覧画面へのルーティング

  get '/users', to: 'users#index'

  # 新規投稿画面へのルーティング

  get '/users/new', to: 'users#new'

  # 新規登録するためのルーティング

  # <%= form_with model:@user, url: "/users", method: :post, local: true do |f| %>と対応している

  post '/users', to: 'users#create'

end

 

✅usersコントローラにindexアクションを定義する

投稿したデータをデータベースから取り出す処理を書く。

 

class UsersController < ApplicationController

  # 一覧画面に対応するアクション

  def index

    @users = User.all

  end

 

  # 新規登録画面に対応するアクション

  def new

    # Userモデルのオブジェクトを作り、インスタンス変数に格納する

    @user = User.new

  end

 

  def create

    # String Parameter の記述

    # user_paramsメソッドで指定した条件を満たしたら、データベースのUserテーブルにデータが追加される

    User.create(user_params)

  end

 

  # UsersControllerの中でしか使わないメソッドはprivateのしたに記述する

  private

  def user_params

    # この記述により、 user のパラメータに紐づいた name や age しかデータベースに登録できないようになる

    params.require(:user).permit(:name, :age)

  end

 

end

 

✅index.html.erbを作成し、ユーザーデータが一覧表示できるようにする

 

 

<%= link_to "投稿画面へ", "/users/new"%>

<%# @usersには(User.allによって)userテーブルから取得してきた全てのデータが配列になって入っている %>

<% @users.each do |user| %>

<p>

<%= user.name %>

<%= user.age %>

</p>

<% end %>

 

 

ここまでできたら、一度サーバーを立ち上げRailsアプリの動作を確認する。

ユーザーのデータが一覧表示されていれば大丈夫。

以下のURLでアクセスする。

http://localhost:3000/users