听音乐先~
接续前一篇文章,做出一个实体後。
专案中
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
回到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。
可於html中输入ruby语法的档案。
档案中可以输入任何你会的中英文或html。
重整浏览器,画面就会出现你输入的内容。
接着我们回到一下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...
MySQL Sakila Sample Database https://dev.mysql.com...
高中听过有人念ㄙㄨㄟˊ 圆形,我当时真是害怕极了。 --- 椭圆曲线 (Elliptic curve...
昨天,我们把建立决策树条件设定完,那今天,我打算写建立决策树後半: 有了条件後,就开始建立整个决策树...
我们昨天 Day 04 的时候在 App.js 档案中有看到以下的程序码: 不过,为什麽能够在一个...
前言 终於把这次系列文需要先学会的观念都介绍完了,接下来就要进入实作环节的重头戏,前面讲了那麽多的观...