从另一个控制器访问变量

时间:2015-02-11 20:25:37

标签: ruby-on-rails controller

我刚刚从PHP切换到rails,我正在试图弄清楚如何让我的menu_price控制器访问我的类别控制器中的变量。

class CategoriesController < ApplicationController
  before_action :set_category, only: [:show, :edit, :update, :destroy]

  def index
     @categories = Category.all
  end

我想到了全局变量,但我认为这不是一种安全的方法。我还读到ruby不支持多重继承,这将是我的第二种方法。

这是我的菜单控制器(我只添加了一部分,因为其余代码不相关。)

class MenuPricesController < ApplicationController
  before_action :set_menu_price, only: [:show, :edit, :update, :destroy]

  def index
    @menu_prices = MenuPrice.all
  end

我确信这很简单,但我一直在寻找过去一小时左右的答案。我读到了关注文件夹,但我不知道如何处理,我在书中没有那么远。

2 个答案:

答案 0 :(得分:2)

在您的MenuPricesController中,您可以创建一个新的Category实例并像这样使用它:

class MenuPricesController < ApplicationController
  before_action :set_menu_price, only: [:show, :edit, :update, :destroy]


 def index
    @menu_prices = MenuPrice.all
    @categories = Category.all
    # do something
  end

答案 1 :(得分:1)

Category.all未在您的CategoriesController类中定义,它在Category类中(我假设它是一个ActiveModel模型......)您可以(并且应该)在您的类中创建实例变量控制器动作。