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