邁向 Rails 高級新手

helper patterns

helper是以module的形態存在的,在rails內負責寫view要用到的method。

所以設計時能夠保持「簡單」且「可重副使用」是最重要的 通常我們要使用helper的時機是view有太多髒亂的code的時候,所以有時候會想把所有的髒code都寫進同一個helper method裡面,這是不對的。

比較好的做法是應該把這些髒code拆成很多不同的小部分,再針對不同的部分判斷是要放在partial還是helper。 我們也可以在partial內搭配helper,這也是讓view變乾淨的好方法。

由於要讓helper保持「簡單」且「可重副使用」,在設計helper時應該讓helper只「做一件事情」。(例如:判斷是否能編輯文章、回傳文章的連結按鈕)

這樣做的好處是這個helper就會變得重複使用性很高(畢竟很多地方都需要判斷是否能編輯文章),就不會變成為了某個特定的view寫了一個helper卻只能用到一次,落實don't repeat your code的ruby精神。

以下一些常見的helper設計方法舉例:

1.儘量避免太多html code(無論ruby的或純html)

2.View裡面有太多讓人難以理解的判斷時,裝在helper裡面並語意命名,讓view更能理解

<% if current_user && current_user = @topic.user_id %>
    #show shomething
<% end %>

可以改成

<% if editable?(current_user) %>
    #show shomething
<% end %>

推薦參考文章: