21 - Draper
上篇 Design Pattern(1) - Decorator 簡單的介紹了自己生一個 decorator,不過可以發現東西會經過 helper
,相對於來說個人不太喜歡,又或者是原本沒有使用 decorator
將邏輯直接放在 helper
內,且 full_name
方法是沒有任何 namespace
在 controller 與 view 之中。
1 2 3 4
| def full_name "#{first_name} #{last_name}" end
|
gem install
Writing Decorators
建立對應的 Decorator,並指要呼叫 decorate
方法就可以使用裡面的方法。
1 2 3 4 5 6 7
| class UsersController < ApplicationController def show @user = User.find(params[:id]) @user_decorator = @user.decorate end end
|
1 2 3 4 5 6
| class UserDecorator < Draper::Decorator def full_name "#{first_name} #{last_name}" end end
|
View
1 2
| <%= @user_decorator.full_name %>
|
其實整體東西與上一篇的概念是差不多的,不過 draper 做到更多意想不到的事情,詳細也可以參考文件。
參考資料