新學期的第一次課程,關於rails的一些基礎,上完課後的想法。
五步驟:新專案 -> 鷹架 -> 轉資料表 -> 伺服器 -> 網頁開啟
01.開新專案
$ rails new bookstore
切到新開的專案下
$ cd bookstore/
02.產生鷹架
$ rails generate scaffold book title:string content:text price:integer page:integer publish_date:date is_online:boolean
generate:可簡寫成g
book:為表單名稱
title, content, price, page, ...:為欄位名稱
:後面表示欄位類型,如:string, text, integer, ...。沒寫就是預設的string
建立完成時,/db/migrate/20150309063722_create_books.rb會出現,顯示資料的欄位與名稱。
03.依描述轉成資料表
$ rake db:migrate
建立完成時,/db/schema.rb會出現,顯示資表結構(入資料庫了)
04.伺服器執行
$ rails server
因環境裝不起來,換成線上平台c9.io
c9.io伺服器執行
新開一個terminal
切到專案下
$ cd bookstore/
伺服器執行
$ rails server -p $PORT -b $IP
05.開啟網頁
開瀏覽器:http://localhost:3000/
加上books就可以了
http://localhost:3000/books
在c9.io中
Preview->Preview with Web Server
https://5xruby-s940101.c9.io/
加上books就可以了
https://5xruby-s940101.c9.io/books
gemfile檔(算是設定檔吧)
>=1.3.0:表示找大於或等於1.3.0的版本
~>2.1.0:表示抓最近的小版本(最後的數字.0)
若覺得載入太慢,按下ctrl+c停止後,可用此指令繼續;或是在安裝時,需要其他先行檔時,也可以用此指令。(幫你找或補齊需要的套件版本)
$ bundle install
rails的特色:
CoC:慣例優於設定。
DRY:不要重複你自己。
CURD:快速的新增、修改、刪除。
MVC:設計慣例。m模型(資料)、v畫面、c控制器。
mvc檔案所在的位置:
controller(控制器):/app/controllers/books_controller.rb
view(畫面):/app/views/books/index.html.erb
model(模組):/app/models/book.rb
router:/config/routes.rb
看詳細功能
$ rake routes
分成下列四種
- post(新增)
- get(讀取)
- put & patch(更新)
- delete(刪除)
再建立兩張表單(重複上面的02~03步驟)
user name:string, email:string
post title:string, content:text, user_id:integer
資料相連接,在
/app/models/post.rb 加上belongs_to:user
/app/models/user.rb 加上has_many:posts
開啟類似ruby的irb
$ rails console
console:可簡寫成成c
重新整理:reload!
離開:ctrl+D
下面都是在rails c下的動作
- 列出所有使用者
=>User.all
- 列出id為1的使用者
=>User.find_by(id:1)
- 計算有多少使用者
=>User.count
欲改變某欄位的資料
- 找到那筆資料,並指定給p1
=>p1=User.find_by(id=1)
- 改變使用者名稱
=>p1.name="cat"
(記得要加上"",因為是文字)
- 存檔
=>p1.save
(不存就還是原先的,所以一定要存)
兩串接的資料,
- 想知道這篇文章的使用者名稱
=>Post.find_by(id:1).user.name
- 想知道這位使用者有哪些文章
=>User.find_by(id:1).blogs
驗證資料完整性
/models/posts.rb
validates:title, presence:ture
/models/user.rb
validates:name, length:{minimum:5}
validates:需要驗證的欄位
presence:是否可以空白
length:{minimum:5}:長度限制,最少不能少於五個字。
沒有留言:
張貼留言