Ruby 轨道控制器和;“受保护”;涉及继承的变量

Ruby 轨道控制器和;“受保护”;涉及继承的变量,ruby,ruby-on-rails-3,scope,Ruby,Ruby On Rails 3,Scope,我想在我的应用程序\u controller.rb控制器中声明一个变量,所有从它继承的控制器都可以访问该变量。如果可能的话,我希望该变量只能在子类中访问,而不能在其他任何地方访问,包括视图(除非专门传递到视图中) 我是Ruby和Rails新手,不确定变量是否存在“受保护”的作用域,我看到函数也存在。我一直无法找到一个简单的答案,我一直在我的应用程序中尝试不同的方法来声明变量,以及在哪里可以访问变量。这并没有给我提供任何关于如何实现这一目标的信息 任何帮助都将不胜感激 代码: class Appl

我想在我的
应用程序\u controller.rb
控制器中声明一个变量,所有从它继承的控制器都可以访问该变量。如果可能的话,我希望该变量只能在子类中访问,而不能在其他任何地方访问,包括视图(除非专门传递到视图中)

我是Ruby和Rails新手,不确定变量是否存在“受保护”的作用域,我看到函数也存在。我一直无法找到一个简单的答案,我一直在我的应用程序中尝试不同的方法来声明变量,以及在哪里可以访问变量。这并没有给我提供任何关于如何实现这一目标的信息

任何帮助都将不胜感激

代码:

class ApplicationController < ActionController::Base
    protect_from_forgery
    @admin_name = "AdminUserName"
    @admin_password = "AdminPassword"
end

class ProjectsController < ApplicationController
    http_basic_authenticate_with :name => @admin_name, :password => @admin_password, :except => [:index, :show]

    # controller functions here
end
class ApplicationController@admin\u name,:password=>@admin\u password,:except=>[:index,:show]
#这里的控制器功能
结束

这似乎对我不起作用。

正如您所认识到的,ruby中的变量不存在受保护的作用域之类的东西。您可以使用in Rails在控制器中设置视图可以访问的变量。这是一个古老的Rails功能

实例变量从一个实例继承到另一个实例

class A
  def make_ivar
    @foo = 'bar'
  end
end

class B < A
  def get_ivar
    @foo
  end
end

b = B.new
b.make_ivar
b.get_ivar #=> @foo

您错过了继承部分
类B
。因此,这似乎对我不起作用。我将在一秒钟内用我的实际代码更新我的问题,以准确显示我正在尝试做什么。我相应地更新了答案。我假设管理员用户名和密码保持不变,如果不是,则通过模型进行身份验证。
class ApplicationController < ActionController::Base
  protect_from_forgery
  ADMIN_NAME = "AdminUserName"
  ADMIN_PW = "AdminPassword"
end

class ProjectsController < ApplicationController
  http_basic_authenticate_with :name => ADMIN_NAME, :password => ADMIN_PW, :except => [:index, :show]

  # controller functions here
end
ApplicationController::ADMIN_NAME