# [08/09_c] Rails實作 R -> C ## Rails 以開放類別擴充Ruby,多了很多實用方法。 ### 開始建立 1. 在目標目錄 rails new 專案名稱 => 開新專案。 2. 在目錄中新目錄 rails s => 開伺服器。 3. 可得到一個local 3000網址。 ### 得到資料夾(用VSCode看) * **app 大部分程式碼**(重要) * 資料夾 accets:圖片等 * 資料夾 channels:即時通訊 * 資料夾 helpers:放函式rb檔,讓views可以用 * 重要MVC * 資料夾 models * 資料夾 views * 資料夾 controllers * **config 設定檔**(重要) * **database.yml 資料庫設定檔** * 檔案中之 * deault 為開發環境 * develpoment 為發環境 * test為測試環境 * production 為發行 * adapter: sqlite3 為使用之資料庫,串接對象(實體在db目錄下),改名後重啟rails server就生效 * 推薦使用資料庫 PostgreSQL(開源版) * **routes.rb** * 裡面有個block * **db database** (重要) * routes.yml 門口指路人 * migrate:描述資料表的模樣 * lib * tasks 放任務 * node_modules 東西太多,不用於板控 * puclic 放公開網頁(靜態) * 包括404.html * **config.ru 發動Rack** * **Gemfile 版本資訊** * 瀏覽rails版本與已安裝套件 * 板號規律 * 6.1.3 Major.Minor.Patch * Patch向下相容,不會把專案弄壞 * Minor變化較大,有風險 * Major變化非常大,當作不相容 * group :development, :test do //開發及測試環境中 載入 * group :development do //測試環境中 載入 * package.json 前端之內容 * "devDependencies": //開發時才載入的 #### adapter:轉接頭,透過他讓rails跟database溝通 可在 Gem 搜尋 pg 或 sqllite 下載。 ### 建立第一個網頁 - Route = 指路人 = 路徑解析 - **MVC結構的任務(面試題)** - **Controller** = 調度資料,流程控制 - **Model** = 翻譯者 = 資料庫相關資料及邏輯 透過 Ruby 語法跟 Model 溝通,Model 會轉換成 SQL 語言跟資料庫溝通,最後回傳人類訊息。 此過程,會產生 Migration 檔:描述資料表內容,與 Git 版控一樣會記錄所有的變動(演進過程)。惟直接操作資料庫不紀錄。 - **View** = 資料呈現,畫面相關 = 會回傳 HTML 內容的方法  #### Route * 連路徑 /hello * 詢問route路徑對照表 * 在config/routes.db 告知正確路徑 * 或是404 * **編輯routes.rb** ```ruby= Rails.application.routes.draw do get "/hello", to: "page#main" #若看到hello,就到controller「page」的「main」方法 end ``` * controller與方法實際指向"app/views/(controller名)/(方法名).副檔名" #### Controller(手動) * 依錯誤訊息(找不到controller),在app/controllers下新增「**pages**_controller.rb」並繼承ActionController * 繼承之繼承,ActionController本身是空的,又繼承自ActionController::Base(功能都在這裡) * 將**main**功能定義出來: ```ruby= class PagesController < ActionController::Base def main render (html: 'My Hello Page') #若寫,渲染一個網頁 #若不寫,會自動尋找 app/views/pages/main.html @abc = 123 #若寫實體變數,可在views目錄下網頁檔呈現 end end ``` * 新增的controller在"app/controllers"下 * 依剛剛route設定的controller與方法名稱,手動在"app/views/ 下新增目錄(controller名)與檔案(方法名,副檔名也可為.html.erb) * 本例為:*app/views/pages/main.html* * 若要印出前例controller實體變數,可以拿出來: ```ruby= <%= @abc =%> ``` #### Controller(終端) * 不使用VSCode,可在終端建立controller(例名稱:users),打指令: ```ruby= rails g controller users ``` * Rails自動規範:class名稱蛇式<==>檔案名稱駝峰式。 * 自動建立應有檔案/目錄後,其餘流程類似 * 在(新)controllers.rb檔案定義(def)一個新方法 * 手動在app/views/新目錄/ 下新增(方法名)檔案 #### 建立database 可以不用進資料庫操作,rails 就會顯示有沒有寫入。 可以把 excel 當資料庫來看,一個 excel 檔裡面有很多資料表,資料表有很多欄跟列,每一列都是一筆使用者的資料。 ###### tags: `Rails` ###### tags: `面試題`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up