use*_*662 5 ruby ruby-on-rails object instance-variables ruby-on-rails-3
我在Rails 3应用程序中有一个详细信息页面,它有几个实例变量.例如,我的视图有以下实例:
@product
@program
@action
...etc...
Run Code Online (Sandbox Code Playgroud)
其中一些是单个字符串,一些是数组(来自外部API的请求的结果).总的来说,数据来自至少3个型号.
我的问题是:合并实例变量的最佳方法是什么,这样我的视图和控制器看起来更干净(不牺牲可读性)?我理解这个问题是开放式的,每个人都有自己的偏好,但有哪些选择呢?我正在考虑将实例变量组合到一个对象中,以便前面的代码变成这样:
Details.product
Details.program
Details.action
Run Code Online (Sandbox Code Playgroud)
非常感谢!
更新:走对象路线,是否有任何实际实现它的好例子(github,博客文章)?
在我看来,清理控制器操作的最佳方法是在那里分配尽可能少的实例变量。在实践中,我尝试仅在 action/before_filters 中分配直接从传递给它的参数派生的实例变量。另外,一般来说,我会尝试将尽可能多的实例变量分配推送到 before_filters 中,以保持操作的精简。
但减少操作中实例变量分配的最佳方法是使用视图助手。例如,如果您当前在用于输出某些 div 的操作中分配实例变量,则只需使用视图助手直接执行输出,无需将对象传递给视图。
这是控制器上的 before_filter 的示例:
before_filter :assign_variables, :only => :show
def show; end
private
def assign_variables
@product = Product.find(params[:product_id])
@program = Program.find(params[:program_id])
@action = Action.find(params[:action_id])
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1797 次 |
| 最近记录: |