gpt4 book ai didi

ruby-on-rails - 在 Rails 中合并实例变量(将数据从 Controller 传递到 View )的最佳方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:18 24 4
gpt4 key购买 nike

我在 Rails 3 应用程序中有一个详细信息页面,其中包含多个实例变量。例如,我的 View 有以下实例:

@product
@program
@action
...etc...

其中一些是单个字符串,一些是数组(来自外部 API 的请求的结果)。总体而言,数据来自至少 3 个模型。

我的问题是:合并实例变量以使我的 View 和 Controller 看起来更干净(不牺牲可读性)的最佳方法是什么?我知道这个问题是开放式的,每个人都有自己的喜好,但是有哪些选择呢?我正在考虑将实例变量组合到一个对象中,所以之前的代码变成这样:

Details.product
Details.program
Details.action

非常感谢!

更新:采用对象路线,是否有实际实现它的任何好的示例(github、博客文章)?

最佳答案

在我看来,清理 Controller 操作的最佳方法是在其中分配尽可能少的实例变量。实际上,我尝试只在直接从传递给它的参数派生的 action/before_filters 中分配实例变量。另外,一般来说,我会尽可能多地将实例变量赋值给 before_filters 以保持 Action 的 slim 。

但是减少操作中实例变量赋值的最好方法是使用 View 助手。例如,如果您当前在用于输出一些 div 的操作中分配一个实例变量,只需使用 View 助手直接进行输出,而无需将对象传递给 View 。

这是 Controller 上的 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

关于ruby-on-rails - 在 Rails 中合并实例变量(将数据从 Controller 传递到 View )的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com