将值传递给控制器​​中的实例变量

时间:2013-09-18 08:45:18

标签: ruby-on-rails ruby-on-rails-3

我有一个show动作,我希望通过查询的实例变量将值传递给视图quantity: 8

这里,创建实例变量:

@organizer = Organizer.find(params[:id])

我想我可以通过使用attr_accessor创建虚拟属性或将值传递给params来传递此值。

假设我有这两个选择是对的,我有两个问题。

问题1:这两种方式中的任何一种都有明显优势吗?

问题2:如何将此值添加到视图可访问的参数中?

2 个答案:

答案 0 :(得分:1)

正如OP所说,最好最小化控制器中生成的实例变量,最好只有1。

那么,关于如何使用quantity,我将做出如下决定:

  1. 如果这与模型无关,我将直接使用帮助程序并在视图中调用此帮助程序。

  2. 如果这与模型有关但与控制器没有关系,我会在模型中制作这样的方法。

  3. 如果这与模型和控制器有关,并且模式只能是一次,我将再使用一个实例变量。这不好,但只有一次,所以请原谅。

  4. 如果这与模型和控制器有关,但预计会出现多次,我将使用Presenter或Decorator模式。

  5. 并且我不会考虑param。

答案 1 :(得分:1)

问题1:这两种方式中的任何一种都有明显优势吗?

使用params的方法不是一个真正的选择。如上所述,params用于将参数从视图传递到控制器,而不是反之亦然。明显的优势在于 - 按惯例使用它的方式。

问题2:如何将此值添加到视图可访问的参数中?

你甚至都没试过。如果你的意思是 - 设置参数并将其传递给视图。使用像@quantity = 8这样的实例变量,或者您可以为变量值设置全局变量或新表,然后使用该值设置@quantity