像这样做过滤器是一种常见的做法:
before_filter :get_clients, :only => [:new, :edit, :create, :update]
...
def get_clients
@clients = Client.accessible_by(current_ability)
end
Run Code Online (Sandbox Code Playgroud)
我的表单需要访问@clients,因此我使用before过滤器设置变量@clients,而不是在每个方法中进行.这有意义吗?
我建议建立一个memoized帮助器:
def current_clients
@current_clients ||= Client.accessible_by(current_ability)
end
helper :current_clients
Run Code Online (Sandbox Code Playgroud)
这将与before-filter一样有效,但除非您需要实际加载表单/视图的客户端列表,否则不会运行.你正在懒得加载这个资源.知道如何加载客户端列表的责任仍由控制器保留.
| 归档时间: |
|
| 查看次数: |
3281 次 |
| 最近记录: |