前提

  • ↓从上一篇文章中已经创建 Hello World 应用程序的地方开始。

  • 既然目的是体验CRUD,那么简单易用的功能和设计就完全被忽略了。

控制器准备

之前的功能只是显示users表的数据,
我想添加额外的注册/更新/删除功能。

它是实现所谓的 CRUD 功能的图像。

  • C(创建 - 注册)
  • R(读 - 见)
  • U(更新)
  • D(删除)

?奖金
R(reference) 上次已经实现了,但是由于它只实现了所有记录的获取,
这次,我们还将实现一个功能,允许您通过指定键来引用特定数据。

让我们先制作框架。

应用程序/控制器/users_controller.rb
class UsersController < ApplicationController
  def index
    @users = User.all
  end
  
  def show
  end

  def new
  end

  def create
  end

  def edit
  end

  def update
  end

  def destroy
  end
  
  private
  
  def permit_params
    params.require(:user).permit(:name, :age)
  end
end

我会写每个的内容。

显示(见)

应用程序/控制器/users_controller.rb#show
  def show
    @user = User.find(params[:id])
  end

查找与参数中收到的 id 匹配的用户。

创造

app/controller/users_controller.rb#new,create
  def new
    @user = User.new
  end

  def create
    @user = User.new(permit_params)
    @user.save
    redirect_to @user 
  end

new 新用户模型并显示新注册屏幕。
create 是实际注册过程。使用参数中接收到的内容注册到 users 表。
更新后,重定向到显示屏幕。

更新

app/controller/users_controller.rb#edit,update
  def edit
    @user = User.find(params[:id])
  end

  def update
    @user = User.find(params[:id])
    @user.update(permit_params)
    redirect_to @user 
  end

edit 检索与参数中接收到的 ID 匹配的数据,并将其显示在更新屏幕上。
update 是实际的更新过程。
使用参数中接收的内容更新与 ID 匹配的用户数据,并创建。

删除

应用程序/控制器/users_controller.rb#destroy
  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to users_path
  end

销毁与参数中接收到的 ID 匹配的数据。

使它成为一个强参数

应用程序/控制器/users_controller.rb#permit_params
  def permit_params
    params.require(:user).permit(:name, :age)
  end

我们将稍微修改参数,以便可以执行注册/更新处理。
require 检查用户模型中是否存在密钥并提取它。
允许保存permit 指定的列。

参看。
https://pikawaka.com/rails/permit

路由设置

让我们同样添加routes.rb 来调用我们添加到Controller 中的方法。

配置/路由.rb
Rails.application.routes.draw do
  resources :users
end

这一行似乎很好。 (我试图写点东西。)
我参考了下面的 Rails 官方参考。

似乎只用上面的一行描述就可以完成各种路由设置。
即,进行以下设置。

HTTP 动词 小路 控制器#动作 目的
得到 /users 用户#index 显示所有用户列表
得到 /photos/new 照片#新 返回用于创建用户的 HTML 表单
邮政 /users 用户#创建 创建 1 个用户
得到 /users/:id 用户#显示 引用特定用户
得到 /photos/:id/edit 照片#编辑 返回一个 HTML 表单供用户编辑
补丁/放置 /users/:id 用户#更新 更新特定用户
删除 /users/:id 普豪斯托斯#destroy 删除特定用户

嗯。

查看准备

目前,我们只为显示用户列表的索引创建一个视图,所以
准备一个屏幕(视图)以供参考/注册/更新/删除。

Rails7で基本のCRUDを体験しよう

/app/views/users 下创建它。

/app/views/users/show.html.erb
<p>Show Page</p>
<p>
  ID:<%= @user.id %>
  Name:<%= @user.name %>
  Age:<%= @user.age %>
</p>
<%= link_to 'top', users_path %>

查询画面。
显示参数中指定 ID 的用户数据。
下面是列表屏幕的链接。

/app/views/users/new.html.erb
<p>New Page</p>
<%= form_with model: @user do |form| %>
  <div>
    <%= form.label :name %><br>
    <%= form.text_field :name %>
  </div>
  <div>
    <%= form.label :age %><br>
    <%= form.text_field :age %>
  </div>
  
  <div>
    <%= form.submit %>
  </div>
<% end %>

这是注册屏幕。
将每个输入表单中输入的值作为表单传递。
使用form.submit 执行创建过程。

/app/views/users/edit.html.erb
<p>Edit Page</p>
<%= form_with model: @user do |form| %>
  <div>
    <%= form.label :name %><br>
    <%= form.text_field :name %>
  </div>
  <div>
    <%= form.label :age %><br>
    <%= form.text_field :age %>
  </div>
  
  <div>
    <%= form.submit %>
  </div>
<% end %>

这是更新画面。
每个输入表单最初都显示具有指定 ID 的用户数据。
您可以通过重写表单值来更新用户数据。
form.submit 将执行更新过程。

此外,我稍微调整了索引并添加了一个链接,以便您可以过渡到每个屏幕。

/app/views/users/index.html.erb
<p>Index Page</p>
<%= link_to 'new', new_user_path %>

<table>
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Age</th>
  </tr>
  <% @users.each do |user| %>
    <tr>
      <td><%= user.id %></td>
      <td><%= user.name %></td>
      <td><%= user.age %></td>
      <td><%= link_to 'show', user_path(user) %></td>
      <td><%= link_to 'edit', edit_user_path(user) %></td>
      <td><%= link_to 'destroy', user_path(user),
        data: {turbo_method: 'delete', turbo_confirm: 'Are you sure?'} %>
      </td>
    </tr>
  <% end %>
</table>

显示注册屏幕、每个数据的查询屏幕、更新屏幕的链接和删除链接。

让我们实际移动

我马上写了,但让我们检查一下操作。

顶部屏幕

Rails7で基本のCRUDを体験しよう

它列出了正确输入的数据。
首先,按new 链接注册一个新帐户。

注册屏幕

Rails7で基本のCRUDを体験しよう

安装了用户表的nameage 列的输入表单和提交按钮。

Rails7で基本のCRUDを体験しよう

输入姓名和年龄,然后按“创建用户”按钮

查询画面

Rails7で基本のCRUDを体験しよう

移至查询屏幕。
在注册画面上输入的takagiage的数据被注册并显示。

使用top 返回顶部屏幕。

Rails7で基本のCRUDを体験しよう

新注册的takagi 现已上市。

更新画面

edit 按钮。
Rails7で基本のCRUDを体験しよう

早先注册的takagi的数据,初始设置在输入表单中。
takagi 今年 29 岁。所以我会修复它。

Rails7で基本のCRUDを体験しよう

Update User 按钮。
Rails7で基本のCRUDを体験しよう

已成功更新至29 岁。

删除

Rails7で基本のCRUDを体験しよう

删除takagi。单击destroy 链接。

Rails7で基本のCRUDを体験しよう

将出现带有Are You Sure? 的确认对话框。
如果您按キャンセル,对话框将关闭并保留在顶部屏幕上而不会被删除。
OK

Rails7で基本のCRUDを体験しよう

takagi 已被删除。

在最后

  • 这次我在一个简单的users 表上体验了CRUD。
  • 我想创建一个相关表,并一起更新或删除相关数据。
  • 我很难为工作编写 rspec,所以我想尽快了解它...

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308622681.html

相关文章: