iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
1
Modern Web

Rails guide / Ruby API study系列 第 7

[ Rails guide study ] Day07 Render 的基本使用 (Layouts and Rendering in Rails part1)

首先來聽個歌吧
Yes
查了一下有什麼 view 相關的歌,結果只查到有個韓團的歌叫做 view ,實在是 po 不下去...所以就放了一首自己喜歡的歌囉!


Controller 跟 View 最基本的慣例

今天來到全新的章節,來看看他寫了什麼吧~
整篇文章主要講的是 controller 跟 view 之間的互動關係

在 2.1 這邊提到了一個很常用的慣例
如果今天有一個 controller 叫做 CandidatesController,如果內容長這樣

class CandidatesController < ApplicationController
    def index
    end
end

在 routes 檔案中有設定好路徑的前提下

雖然我們的 index 方法裡面什麼都沒寫,但他會根據這個 controller 跟 index 這個方法的名字去找到 views 資料夾底下 candidates 資料夾中有 index.html 字樣的檔案,檔案名稱有可能是 index.html.erb 或者 index.html.slim 等等

views/controller_name/action_name.html.erb => 會自動找到這裡來喔

檔案名其中的 erb 跟 slim 是樣版引擎,這裡面除了 html 的語法之外,還可以用特殊的方式容納其他語言的語法進來,這個方式根據不同樣板引擎會有不同的方法


Render 的基本使用

接下來文章中提到我們可以用 render 這個方法去渲染出很多種類的資訊,比較常用的是我們會需要去渲染出同一個 controller 裡面的 action

# 以下六種方式都可以渲染出 candidates controller 中的 edit 畫面
render :edit
render action: :edit
render "edit"
render action: "edit"
render "candidates/edit"
render template: "candidates/edit"

render 後面還可以接其他種資訊

# 要渲染出其他 controller 的畫面可以用 render template:
render template: "products/show"
# render template 後面的 template 可以選擇不寫
render "products/show"

# render inline: 只適用在 erb 樣版引擎,不建議使用
render inline: "<% products.each do |p| %><p><%= p.name %></p><% end %>"
# 完全不想要任何 html 標籤的話可以使用 plain
render plain: "OK"

# 如果要渲染的 html 內容不多可以考慮寫在 controller 中
render html: helpers.tag.strong('Not Found')

# 除上述之外, 也可以 render json / xml / body / file 這些格式

在 render 後面,我們還可以額外增加一些屬性如下:

# conten_type 指的是要用什麼格式去渲染,預設會用 text/html 
:content_type
# layout 可以指定我們要讓他的外殼用哪一份文件去渲染,這部分會在之後再提到
:layout
# 用 location 設定 HTTP Location header
:location
# 用 status 直接指定 http 狀態
:status
# 用 formats 轉換格式,預設是 html
:formats
# rails 預設中已經有手機跟桌機格式,可以用 varaints 去做變換
:variants

今天就先寫到這邊啦!請大家期待更多好歌吧(咦?)

參考資料
Rails Guide

[Rails] Action View, Layout, Partial, Render

本文章同步分享於 http://anthonychao.site/


上一篇
[ Rails guide study ] Day06 如何複寫Model table 慣例 / 資料存取刪除簡介 (Active Record Basics part3)
下一篇
[ Rails guide study ] Day08 Layout 的基本使用 (Layouts and Rendering in Rails part2)
系列文
Rails guide / Ruby API study30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言