【rails】新手如何建立 CRUD

在开始一个专案的时候,新手常常不知道从哪边开始
决定整理一下专案制作的流程
本文主要陈述思考的脉络,执行的指令就不赘述
如果有错,也请路过的各位高手不吝指教
那麽我们便开始吧~


建立专案,最一开始当然是要 new 一个专案罗~
不过新手常常直接就 new 下去了,若是直接 new 一个新专案,rails 会使用目前环境最新的版本产出档案。不过跟着一些线上课程或是一些线上资源操作的时候,教材也许不是使用最新版本的rails。因此建议在建立专案的时候指定适合的版本,指定的方法如下:

#记得在版本前後要加入底线
rails _6.1.4.6_ new myproject 

如果你还没有rails 6
那麽你可以先执行

 # -v 後面请依照需求设定版本
 gem inatall rails -v 6.1.4.6

想知道自己现在的版本可以执行

 rails -v

若之前没有使用过rails 6,在建立新专案前,要先安装 yarn 这个套件,许多人在初尝试rails安装环境失败,通常都是没有先安装 yarn

brew install yarn

以上步骤执行顺利的话,最难的部分已经结束XD

接下来的步骤是给常常不知道下一步该做什麽的新手参考

了解rails的开发模式

Rails 是利用 MVC 的设计模式开发, MVC 由 Model、View、及 Controller所组成,如果还不清楚的朋友,建议可以先停下来,了解一下 MVC 的架构。了解 MVC 分别在做什麽,才能知道自己下一步应该做些什麽事。

首先,要看到首页,可以先想一下,每次你在看别的网页的时候,是不是都有一串网址在上面,有了网址服务器才知道你现在想要去哪里。

永远先想路由该怎麽设计

所以,现在你应该想一下你的路由要叫什麽名字。并到 config 底下找到 routes.rb,设定路由,决定好路由後,便可以开始建立 controller 设定方法,而既然 controller 设定好了,要看到页面,还要到 view 去产生和 controller 方法相对应的页面名称

需要资料表,你就需要想到建立Model

页面有了,接着就会想要在页面呈现一些资料,如果需要存取资料,那麽就要有 model ,产生 model 的时候也会产生 migrate ,确认 migrate 没问题後,记得存档,并执行rails db:miagrate ,资料才会真的在 schema 喔!

以上顺序每个人可能习惯略有不同,不过在专案要做某个 action 的时候,都应该要想一下,路由该怎麽送,知道路由後,才会知道页面要往哪去,确定好路由後,就明白 controller 要做什麽,也会知道你需要怎麽样的 view 页面罗~

CRUD

CRUD 通常顺序是有了 index,之後会建立表单,送出的 button 通常想要 create 某个东西,因此需要先产生new action,每次做完 action都要想到相对应的页面,通常需要再去制作一个 html.erb档,这时就要想到,现在准备建立的表单可以重复使用,因此可以建立一个 partial form 档案,而在原本的new表单就可以直接render表单。

C

表单建立完成,要送出资料,就要 create 出一个物件,这时候,就需要 create 的 action,在这个 action,需要考虑新增成功以及新增失败两种情况。

R

新增完成,想要检视资料,就会回到 index 页面,想在 index 的页面看到资料,就需要回到 controller 在 index 的 action 设定。

U

以上资料完成後,接着可能需要编辑或是删除,一样,在编辑的时候,需要同时想到 edit 以及 update 两个action,而 edit 页面,因为和 new 使用的表单一样,所以可以render刚刚的表单,送出资料的时候rails会自动判断资料是想要新增还是更新,而在 update 的时候,一样要思考更新成功以及更新失败的状况~

D

最後是删除资料,删除资料就没有这麽复杂罗,找到资料後,把它删除即可(在更熟练之後,需要考虑这个资料是否要真的删除或是软删除,但这个环节就留到以後练习罗)


<<:  【C++】GCD and LCM

>>:  (Vue)创造组件官方教学实作

自动化 End-End 测试 Nightwatch.js 之踩雷笔记:前言

大家好,我是 Dennis,今年三月底变成了前端打工仔,公司的大大们为了让我对专案的理解程度更高,...

Azure - Day3 工作流程 Workflows

今天study的网站是https://docs.microsoft.com/en-us/learn/...

Day 29 : FastAPI 让模型上线

我们通常会建立一个服务来让模型上线,但在上线前,有一些基本的网路知识需要先了解。因此前面会先浅谈网路...

Day 12 | 元件状态:读取 Loading States

在 Livewire 上的操作都会透过 AJAX 将资料往返与前後端之间,有些较长的请求可能不会即时...

[Golang]GOROOT与GOPATH的说明-心智图

1.GOROOT、GOPATH介绍与比较。 2.go build、go install、go get...