ruby-on-rails – 在Rails中合并实例变量(将数据从控制器传递到
发布时间:2020-12-17 03:14:50 所属栏目:百科 来源:网络整理
导读:我在Rails 3应用程序中有一个详细信息页面,它有几个实例变量.例如,我的视图有以下实例: @product@program@action...etc... 其中一些是单个字符串,一些是数组(来自外部API的请求的结果).总的来说,数据来自至少3个型号. 我的问题是:合并实例变量的最佳方法是
我在Rails 3应用程序中有一个详细信息页面,它有几个实例变量.例如,我的视图有以下实例:
@product @program @action ...etc... 其中一些是单个字符串,一些是数组(来自外部API的请求的结果).总的来说,数据来自至少3个型号. 我的问题是:合并实例变量的最佳方法是什么,这样我的视图和控制器看起来更干净(不牺牲可读性)?我理解这个问题是开放式的,每个人都有自己的偏好,但有哪些选择呢?我正在考虑将实例变量组合到一个对象中,以便前面的代码变成这样: Details.product Details.program Details.action 非常感谢! 更新:走对象路线,是否有任何实际实现它的好例子(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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |