partial 的使用

Posted by Anthony Chao on 2019-09-11

Partial

Partial 也是一個很常用的功能,翻成白話文就是 "借畫面"
我們只要在想要借畫面的頁面中使用 render 的方法就可以了!但這邊的慣例要記住:要被借畫面的檔案前面需要有底線"_"的名字,否則不會成功,來看看下面的範例

目前有兩個檔案: index.html.erb 跟 _form.html.erb 都在 views/qoos 的路徑底下

1
2
#index.html.erb
<%= render "form" %>
1
2
#_form.html.erb
<h1>這是 form 的畫面喔!</h1>

最後 index.html.erb 的畫面就會渲染出 _form.html.erb 的畫面

如果要渲染不同資料夾的檔案,只要把路徑寫清楚即可

1
<%= render "shared/form" %>

上面的例子中會渲染 views/shared/_form.html.erb. 的畫面


同時使用 layout

我們在渲染 partial 的時候還能同時渲染 layout 喔!
但這時候需要把 partial 跟 layout 分別是哪份文件都標明清楚,可以看看下面的例子

1
2
# index.gtml.erb
<%= render partial: "form" , layout: "super" %>
1
2
# _form.html.erb
<h1>這是 form 的畫面喔!</h1>
1
2
3
# _super.html.erb
<h1>這是 super 的畫面喔</h1>
<%= yield %>

產生的畫面如下

這邊要特別注意注意兩點:

  1. 這邊的 layout 也是要在同一個資料夾,檔案名稱有底線的檔案喔,而不是在 layout 資料夾中的檔案!
  2. 別忘記 application 的 layout 還是會渲染出來,畫面中 application layout 那一行就是寫在 layouts/application.html.erb 的內容

接下來會介紹如果 partial 中需要變數的話要怎麼傳給他,敬請期待!





prevent_hack