Rails基本介绍(二)

听音乐先~


Rails操作实体

接续前一篇文章,做出一个实体後。

专案中

  project_name/config/route.rb

这个档案为设置路径使用。
专案中,所有的实体资料储存於DB中,简单一点想,路径就是告知电脑调动资料时,有哪些"管道"可以传送。
设计上,modle名为为主干道,有需要的额外管道就会在主干道底下设置。

一样,我们先用快速指令设定。

#project_name/config/route.rb

Rails.application.routes.draw do
  resources :roles
end

书上或很多资料都会告知,这个写法能直接做出8个路径对应七个方法,这七个方法,就是REST风格中希望我们在资料调动上尽量遵照的。

命名使用model的复数。

我自己在路径上的想法是,Route就是路径名,但是路怎麽设计还是由Controller处理,我们告知电脑,我们要走哪条路,路名指向的是controllet给的方法,方法等於这条路上会把资料做什麽处理(action)。

这时已经可以先使用

$ rails server
#请偷懒打rails s即可

指令开启服务器。

而浏览器理所当然因为没有controller会出错。

uninitialized constant RolesController

一样以指令快速建立controller,请记得建立controller时名称与model的名称"复数处理",所以在命名上尽量以英文文法中有复数的单字处理较方便。

$ rails g controller roles

一样观察Rails会自动帮忙建立一些档案及资料匣,比较特别的可以发现view资料匣与controller联动。

先看看controller的档案,如下。

#app >controllers > roles_controller.rb
class RolesController < ApplicationController
  
end

这时可以回网页画面,输入

http://localhost:3000/roles

没更改预设port的话都是3000。

基本上应该也还是一堆红字出现

Unknown action
The action 'index' could not be found for RolesController

Rails非常贴心,会告知你少什麽,那我们少什麽就做什麽。

回到controller

#app >controllers > roles_controller.rb
class RolesController < ApplicationController
  def index
  
  end
end

对服务器重整後,应该出现以下警讯。

No template for interactive request
RolesController#index is missing a template for request formats: text/html

是的,没有view。那我们继续做view。

请於app/views/roles再新增档案index.html.erb。
可以新增index.html也可以,但初学且既然我们是用Rails,请就是记得加erb。

何为erb?

可於html中输入ruby语法的档案。

档案中可以输入任何你会的中英文或html。
重整浏览器,画面就会出现你输入的内容。
https://ithelp.ithome.com.tw/upload/images/20210812/20135887JBIRiXlGRq.png

接着我们回到一下Rails的console,直接操作後台建立一个实体并存档。

$ rails c

输入

2.7.3 :001 > player = Role.create!
   (0.7ms)  SELECT sqlite_version(*)
  TRANSACTION (0.1ms)  begin transaction
  Role Create (0.7ms)  INSERT INTO "roles" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2021-08-12 12:49:56.795342"], ["updated_at", "2021-08-12 12:49:56.795342"]]
  TRANSACTION (0.8ms)  commit transaction
 => #<Role id: 3, created_at: "2021-08-12 12:49:56.795342000 +0000", updated_at: "2021-08...

完成後可输入

2.7.3 :002 > Role.all

确认有无完成。

再回到controller。

class RolesController < ApplicationController
  def index
    @roles = Role.all
  end
end

更改view内容

<h1><%= @roles %></h1>

回到浏览器後就会发现你建立的实体被真正调阅出来了。
可以发现,我们调动实体资料时,如果没有特别做处理,其实是调动一整个记忆体给你。

多输入以下观察。

<h1><%= @roles.first.id %></h1>
<h1><%= @roles.first.created_at %></h1>

first是ruby本来就有的语法。
id与created_at是之前建立资料表,资料库本身就有的,所以资料的名称也等於一个实体方法。(呼叫资料的值)

<% %>与<%= %>是erb档案才能输入的,是让view在指定区块执行ruby语法,有没有=符号,代表要不要显示出来,如果不理解,请先记忆,如果我们要"看到"资料,请用<%= %>。

整理後

出现这三个字,代表前面的都可以不用看,科科

Rails的架构是MVC架构。

Rails中的model还包含了DB要注意,所以对资料库操作熟练,model的部分才能展现的更好。Ruby语法熟练才能让资料库(类别)设计上更灵活。

Rails中的controller与view黏合得更近。controller包含了route要注意,语法熟练可以让人与电脑间的沟通管道更顺畅。view虽然感觉上较看重前端技能,但是不熟悉model与controller可以给予什麽资料,空有外壳没有正确内容是没有用的。


混打字数的一篇..
还是没想到怎麽介绍Rails...


<<:  用ffprobe列出mp4 关键帧的时间

>>:  第34天~

DAY 15- 《公钥密码》-ECC

高中听过有人念ㄙㄨㄟˊ 圆形,我当时真是害怕极了。 --- 椭圆曲线 (Elliptic curve...

DAY07随机森林演算法(续5)

昨天,我们把建立决策树条件设定完,那今天,我打算写建立决策树後半: 有了条件後,就开始建立整个决策树...

[ Day 05 ] JSX 语法

我们昨天 Day 04 的时候在 App.js 档案中有看到以下的程序码: 不过,为什麽能够在一个...

Day28-结合全部所学-前端实作篇

前言 终於把这次系列文需要先学会的观念都介绍完了,接下来就要进入实作环节的重头戏,前面讲了那麽多的观...