Liz's Blog

17道上課筆記#16:什麼時機要用 helper?什麼時機要用 partial?

| Comments

1.helper使用時機:負責處理跟邏輯判斷有關的東西。若是出現以下三種情形,應考慮使用Helper:
(1) 在HTML裡面寫Ruby code用串的
(2) 程式碼中出現越來越多if/else
(3) 程式碼衣服穿很多層

舉例:(Rails101)

app/helper/posts_helper.rb
def render_post_content(post)
  simple_format(truncate(post.content, lenth: 100))
end

這樣一來若對@post.content有任何異動,只要修改helper裡面就好,且把view單純化,邏輯運作轉到helper上,維護上也比較容易。

2.partial使用時機:負責處理大面積的HTML code,或是之後利用ajax render出來的片段。像是以下情形:
(1) 如果View超過2.5個Pagedown
(2) 如果元件需要被重複使用
(3) 特殊元件可拆partial,如:登入登出nav bar或Google Analytics
舉例:(Rails101)

app/views/layout/application.html.erb
...()
<div class="container-fluid">
  <%= render "common/navbar" %>
  <%= notice_message %>
  <%= yield%>
</div>
  <%= render "common/footer" %>
...(略)

把narbar和footer分拆到/common/下,讓application不至於看起來太多冗長。

【參考資料】

  1. 什麼東西應該放在 partial / 什麼東西應該放在 helper

【17道上課筆記系列】

  1. 17道上課筆記#1:整理撰寫 SEO 原則
  2. 17道上課筆記#2:User Story
  3. 17道上課筆記#3:列出五條 Yahoo Frontend Best Performance 最佳實務
  4. 17道上課筆記#4:Strong Parameter
  5. 17道上課筆記#5:如何讓 strong_parameter 接受 nested_attributes
  6. 17道上課筆記#6:before_action 的使用時機
  7. 17道上課筆記#7:session 與 cookie 的差別
  8. 17道上課筆記#8:為何我們要用狀態機去設計訂單狀態?
  9. 17道上課筆記#9:has_one v.s. has_many
  10. 17道上課筆記#10:render 與 redirect_to 的差異
  11. 17道上課筆記#11:routing 的 namespace
  12. 17道上課筆記#12:Callbacks
  13. 17道上課筆記#13:Service Object
  14. 17道上課筆記#14:Inheritance繼承
  15. 17道上課筆記#15:為什麼 Rails 要分production、test、development三種環境
  16. 17道上課筆記#16:什麼時機要用 helper?什麼時機要用 partial?

Comments

comments powered by Disqus