iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0

在上次鐵人賽Day24有提到View Helper
裡頭有輕輕提到把建立好的底線_flash.html.erb檔案在View裡render出來。
這樣的手法,稱為Partial Render局部渲染。

Partial Render

局部渲染是Rails專案很常見的程式碼整理手法之一
在專案裡我們常會看到

<%= render partial: "flash" %>    # 完整的寫法

<%= render "flash" %>    # 簡潔的寫法

以上這樣的寫法,會去尋找目錄下_flash的檔案,並且將這個檔案輸出到你指定要render的地方。
在這裡要注意,這個檔案一定要是底線開頭的才行喔!

使用情況

但是這樣的設計,並不是所有情況下都可以使用,尤其是在帶入變數的狀況下
舉例來看_banner.html.erb,以下例子會自己去空氣中抓看看有沒有@content這個實體變數給它
但卻不是每個頁面都有@content這是實體變數

<div class="bn-item">
  <div>Banner看板</div>
  <div><%= @content %></div>
</div>

所以會建議_banner.html.erb裡這樣寫:

<div class="bn-item">
  <div>Banner看板</div>
  <div><%= content %></div>
</div>

並且在View裡這樣寫 (這裡的partial是不可省略)

<%= render partial: "banner", locals: {content: "我是Banner看板"} %>
或是
<%= render "banner", content: "我是Banner看板" %>

顯示

在上面做render的程式中,我們不會在View裡使用puts或print來顯示結果
而是會在程式的外層使用<%= %>的方法來寫法,將結果顯示在畫面上。

<%= 123 %>    # 畫面上會印出123 

如果使用想在View裡使用判斷或是一些運算方法,我們則是會用<% %>
少一個等號的<% %>這樣的寫法,就不在畫面上顯示出來。

<% 'hi' %>    # 畫面沒有東西

對前端菜鳥來說只是把它當成一種套件模板來使用
把寫好而且會重複使用的模版先放置有底線的檔案裡
並且在每個需要用到同樣功能的View畫面render出來
省時省力又方便呀~


上一篇
Day28 | 符號Symbol
下一篇
Day30 | 自己 self 完賽 yeah!
系列文
從色彩繽紛到只看亂碼日子,學程式從 Ruby 出發!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言