从另一个控制器访问变量

access variables from another 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

我敢肯定这很简单,但过去一个小时左右我一直在寻找答案。我读到了有关关注文件夹的信息,但我不确定如何处理它,我的书中还没有讲到那么多。

在您的 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

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