在上次鐵人賽Day24有提到View Helper
裡頭有輕輕提到把建立好的底線_flash.html.erb
檔案在View裡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出來
省時省力又方便呀~