我有一个show动作,我希望通过查询的实例变量将值传递给视图quantity: 8
。
这里,创建实例变量:
@organizer = Organizer.find(params[:id])
我想我可以通过使用attr_accessor
创建虚拟属性或将值传递给params
来传递此值。
假设我有这两个选择是对的,我有两个问题。
问题1:这两种方式中的任何一种都有明显优势吗?
问题2:如何将此值添加到视图可访问的参数中?
答案 0 :(得分:1)
正如OP所说,最好最小化控制器中生成的实例变量,最好只有1。
那么,关于如何使用quantity
,我将做出如下决定:
如果这与模型无关,我将直接使用帮助程序并在视图中调用此帮助程序。
如果这与模型有关但与控制器没有关系,我会在模型中制作这样的方法。
如果这与模型和控制器有关,并且模式只能是一次,我将再使用一个实例变量。这不好,但只有一次,所以请原谅。
如果这与模型和控制器有关,但预计会出现多次,我将使用Presenter或Decorator模式。
并且我不会考虑param。
答案 1 :(得分:1)
问题1:这两种方式中的任何一种都有明显优势吗?
使用params的方法不是一个真正的选择。如上所述,params用于将参数从视图传递到控制器,而不是反之亦然。明显的优势在于 - 按惯例使用它的方式。
问题2:如何将此值添加到视图可访问的参数中?
你甚至都没试过。如果你的意思是 - 设置参数并将其传递给视图。使用像@quantity = 8
这样的实例变量,或者您可以为变量值设置全局变量或新表,然后使用该值设置@quantity