Ruby/RubyOnRails-日本語
Rails 一日一つメソッド (Day07) updateメソッド
아랑팡팡
2023. 12. 27. 15:31
728x90
Rails 一日一つメソッド (Day7) updateメソッド
updateメソッドを使えば、既存のオブジェクトの属性を修正しDatabaseに保存でくる。
updateメソッドはActiveRecordで使われオブジェクトの色んな属性わ一気にUpdateできる。
updateメソッド動作方法
1. modle探し
- updateするオブジェクトを探す。
user = User.find(1)
2. 属性Update
- 探したオブジェクトの属性を'update'メソッドを使ってupdateする。
user.update(name: "変えたい名前", email: "変えたいEmail")
3. 確認
- updateメソッドが成功したら true
- updateメソッドが失敗したら false
updateメソッド例題
users_controller
class UsersController < ApplicationController
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_param)
redirect_to users_path, notice: '회원 정보가 수정되었습니다.'
else
render :edit, status: :unprocessable_entity
end
end
private
def user_param
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
routes.rb
Rails.application.routes.draw do
get 'users', to: 'users#index'
get 'users/:id', to: 'users#user_show', as: 'user'
get 'user_search', to: 'users#user_search', as: 'user_search'
# 회원가입
get 'signup', to: 'users#new', as: 'signup'
post 'users', to: 'users#create'
# 회원삭제
delete 'users/:id', to: 'users#destroy'
# 회원수정
get 'users/:id/edit', to: 'users#edit', as: 'edit_user'
patch 'users/:id', to: 'users#update', as: 'update_user'
end
index.html.erb
<!-- app/views/users/index.html.erb -->
<h1>登録されている Users</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.name %></td>
<td><%= user.email %></td>
<td>
<%= link_to '수정', edit_user_path(user), class: 'action-button' %><br>
<%= button_to '삭제', user_path(user), method: :delete, class: 'action-button' %>
</td>
</tr>
<% end %>
</tbody>
</table>
edit.html.erb
<!-- app/views/users/edit.html.erb -->
<h1>User情報修正</h1>
<%= form_with(model: @user, url: update_user_path(@user), method: :patch, local: true) do |form| %>
<div class="field">
<%= form.label :name %><br>
<%= form.text_field :name %>
</div>
<div class="field">
<%= form.label :email %><br>
<%= form.email_field :email %>
</div>
<div class="actions">
<%= form.submit "Update" %>
</div>
<% end %>
https://github.com/designAR/rails_method_study/tree/day06_update
728x90
반응형
LIST