menu

Rails - CRUD (Update) database


Melanjutkan tutorial sebelumnya tentang salah satu sistem CRUD yaitu create, kali ini kita akan membuat salah satu sistem CRUD yang lain yaitu update.

Sistem update ini berfungsi untuk, mengubah data field pada suatu tabel database,

Oke langsung saja kita praktekkan tutorialnya,

Pertama, buat terlebih dahulu route untuk sistem update ini dengan menambahkan code berikut pada file routes.rb pada path config/
.
.
.
get 'edit/:id' => 'users#_show', as: :user
post 'edit/:id' => 'users#_edit'

Selanjutnya, buat controller update dengan menambahkan code berikut pada file users_controller.rb pada path app/controllers/

.
.
.
 def _show
  @user = User.find(params[:id])
 end

 def _edit
  @user = User.find(params[:id])
  if @user.update(user_params)
   redirect_to '/users' 
  else 
   redirect_to '/' 
  end 
 end
.
.
.

Kemudian, buat page view untuk sistem update dengan membuat file baru dengan nama _show.html.erb pada path app/views/users/
<%= provide(:title, "Edit") %>
<h1>Edit User</h1>
<br>
<div class="form-group">
 <%= form_for(@user, url: {action: "_edit"}, method: "post") do |f| %>
  <label>First Name</label>
    <%= f.text_field :first_name, :value => @user.first_name, class: 'form-input', required: true %><br>
    <label>Last Name</label>
    <%= f.text_field :last_name, :value => @user.last_name, class: 'form-input', required: true %><br>
    <label>Nick Name</label>
    <%= f.text_field :nick_name, :value => @user.nick_name, class: 'form-input', required: true %><br>
    <label>Address</label>
    <%= f.text_area :address, :value => @user.address, class: 'form-input-textarea', required: true %><br>
    <label>Phone</label>
    <%= f.number_field :phone, :value => @user.phone, class: 'form-input', required: true %><br>
  <%= f.submit "Save", class: "btn-submit" %>  <input type="button" onclick="location.href='/users';" value="Cancel" class="btn-submit" />
 <% end %>
</div>

Terakhir, tambahkan link edit pada page view index.html.erb pada path app/views/user/ dengan mengedit file tersebut menjadi seperti ini,
<%= provide(:title, "User") %>
<h1>Table user</h1>
<br>
<table border="1px" width="100%">
 <thead>
  <tr>
   <th>No</th>
   <th>Name</th>
   <th>Nick Name</th>
   <th>Address</th>
   <th>Phone number</th>
   <th>Birthdate</th>
   <th>Action</th>
  </tr>
 </thead>
 <tbody>
  <% no=1; @users.each do |x| %>
  <% if !x.first_name then x.first_name='' end; if !x.last_name then x.last_name='' end %>
   <tr>
    <td><%= no %></td>
    <td><%= x.first_name+' '+x.last_name %></td>
    <td><%= x.nick_name %></td>
    <td><%= x.address %></td>
    <td><%= x.phone %></td>
    <td><%= x.birth_date %></td>
    <td><%= link_to "Edit", user_path(x) %></td>
   </tr>
  <% no+=1; end %>
 </tbody>
</table>

Sehingga tampilannya akan tampak seperti ini,



Jika butuh sintax ruby yang lain bisa lihat disini, sintax rails lihat disini.


===DONE!===