Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 在Rails3.2.x中,为跨操作使用的实例变量设置默认值的正确方法是什么?_Ruby On Rails 3_Controller - Fatal编程技术网

Ruby on rails 3 在Rails3.2.x中,为跨操作使用的实例变量设置默认值的正确方法是什么?

Ruby on rails 3 在Rails3.2.x中,为跨操作使用的实例变量设置默认值的正确方法是什么?,ruby-on-rails-3,controller,Ruby On Rails 3,Controller,我们希望为呈现的每个页面使用默认名称和描述,除非操作另有定义 正确的方法是什么 我们使用的是Rails 3.2.12。假设您希望在整个站点范围内使用变量,我通常会在ApplicationController上定义一个before\u过滤器: class ApplicationController < ActionController::Base before_filter :intialize_var def initialize_var @var = "some de

我们希望为呈现的每个页面使用默认名称和描述,除非操作另有定义

正确的方法是什么


我们使用的是Rails 3.2.12。

假设您希望在整个站点范围内使用变量,我通常会在ApplicationController上定义一个before\u过滤器:

class ApplicationController < ActionController::Base

  before_filter :intialize_var

  def initialize_var
    @var = "some default"
  end
end
class ApplicationController
然后在控制器中手动覆盖该过滤器,如我所愿:

class PeopleController < ApplicationController

  def initialize_var
    @var = 'parents just dont understand'
  end
end
class PeopleController

您只需在视图中使用
@var
,就可以了。

谢谢,我想如果这只适用于一个控制器,只需在该控制器中使用before_过滤器?哦,对于单个控制器,我会使用before过滤器,并在任何需要自定义值的操作中覆盖
@var
。此解决方案假设您正在应用程序布局(或类似的视图模板/部分)中使用来自可能多个控制器(或所有控制器)的
@var