users_controller.rb
# POST /users
# POST /users.json
def create
respond_to do |format|
if @user.save //これだけでユーザー情報を登録している
//そのあとにformatを返している。
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render :new }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
//バリデーションを行っている。送信データはparamsという変数に入ってくる。
//reqire:必須項目チェックができるメソッド
//userというデータグループが送られているかチェックしている
//その後に、中身のチェックpermitを実行
def user_params
params.require(:user).permit(:name, :age, :prof)
end
users_controller.rb
showだけだが、htmlをきちんと返している。
ここに記載されている。
show.html.erb
<p id="notice"><%= notice %></p> //noticeの変数を表示
<p>
<strong>Name:</strong> //@userという変数の名前や年齢などを渡している。
<%= @user.name %>
</p>
<p>
<strong>Age:</strong>
<%= @user.age %>
</p>
<p>
<strong>Prof:</strong>
<%= @user.prof %>
</p>
<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
なぜ、コントローラでshowだけなのに、インスタンス変数をビューで使えるのか?
↓
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
・・・
private
//これ
//ここでユーザー情報を取得して、@userに格納している
before_actionでset_userを実行することにしている
# Use callbacks to share common setup or constraints between actions.
//paramsにサーバーに送ったデータをfindメソッドに引き渡す
//findでDBに接続して、idを渡す。そのidに該当する情報を取得できる。
def set_user
@user = User.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
params.require(:user).permit(:name, :age, :prof)
end
end