Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 如何在Rails控制器中为特定视图配置初始化视图变量_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何在Rails控制器中为特定视图配置初始化视图变量

Ruby on rails 如何在Rails控制器中为特定视图配置初始化视图变量,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,如果我有一个方法初始化要在视图中访问的特定变量,如: def define_personnel_attribs # Personnel editing variables include: # Array of all columns in Personnel model # Array of all columns to be displayed in table # Array of headers to be displayed in table

如果我有一个方法初始化要在视图中访问的特定变量,如:

def define_personnel_attribs
    # Personnel editing variables include:
    # Array of all columns in Personnel model
    # Array of all columns to be displayed in table
    # Array of headers to be displayed in table

    @all_attribs = ["name",
    "role",
    "firstname",
    "middlename",
    "lastname",
    "address",
    "city", 
    "state", 
    "zip", 
    "homephone", 
    "cellphone", 
    "monthly_pay", 
    "years_worked",
    "current_assignment"]

    @table_attribs = ["name",
    "role"]

    @table_headers = ["Name",
    "Role"]
  end
def admin_dashboard
    if render_personnel == true
         define_personnel_attribs()
    end
end
我从另一个控制器方法调用它,比如:

def define_personnel_attribs
    # Personnel editing variables include:
    # Array of all columns in Personnel model
    # Array of all columns to be displayed in table
    # Array of headers to be displayed in table

    @all_attribs = ["name",
    "role",
    "firstname",
    "middlename",
    "lastname",
    "address",
    "city", 
    "state", 
    "zip", 
    "homephone", 
    "cellphone", 
    "monthly_pay", 
    "years_worked",
    "current_assignment"]

    @table_attribs = ["name",
    "role"]

    @table_headers = ["Name",
    "Role"]
  end
def admin_dashboard
    if render_personnel == true
         define_personnel_attribs()
    end
end
假设在执行控制器方法后呈现名为admin_dashboard.html.erb的视图,并且如果render_personal为FALSE,则应该在define_personal_attribs中初始化的变量是否无法初始化并可由admin_dashboard视图访问?

一些背景:

def define_personnel_attribs
    # Personnel editing variables include:
    # Array of all columns in Personnel model
    # Array of all columns to be displayed in table
    # Array of headers to be displayed in table

    @all_attribs = ["name",
    "role",
    "firstname",
    "middlename",
    "lastname",
    "address",
    "city", 
    "state", 
    "zip", 
    "homephone", 
    "cellphone", 
    "monthly_pay", 
    "years_worked",
    "current_assignment"]

    @table_attribs = ["name",
    "role"]

    @table_headers = ["Name",
    "Role"]
  end
def admin_dashboard
    if render_personnel == true
         define_personnel_attribs()
    end
end
我的目标是创建一个仪表板视图,该视图仅根据登录用户的类型呈现特定部分。例如,如果不允许用户通过人员部分(包含用于查看/编辑人员对象的表单)查看/编辑人员,则我不希望初始化人员变量

如果这不是为用户动态创建/呈现仪表板的方法,请为我指出正确的方向。我的背景主要是桌面应用程序开发,有大约7个月的web开发经验(使用C#、Javascript、CSS等),这是我的第一个Rails应用程序(自学)

如果需要更多详细信息,请询问!我也在Arazon旗下的RubyOnRails频道的Freenode上


谢谢大家!

未初始化的实例变量返回
nil
。如果您希望您的视图能够容忍这种情况,请根据需要执行零检查

我的目标是创建一个仪表板视图,该视图仅根据登录用户的类型呈现特定部分


这正是partials设计的用例类型。最佳实践是编写小的模块化部分,可以根据需要从多个视图中调用。

未初始化的实例变量返回
nil
。如果您希望您的视图能够容忍这种情况,请根据需要执行零检查

我的目标是创建一个仪表板视图,该视图仅根据登录用户的类型呈现特定部分


这正是partials设计的用例类型。最佳实践是编写小的模块化部分,可以根据需要从多个视图调用。

谢谢您的回答;这是否意味着我正确地假设如果render_personal为false,那么实例变量将不会初始化?是的,这是正确的。只需在视图中执行:
如果@all\u attribs.blank?
@all\u attribs.nil?
即可处理该情况非常感谢!按照我的设置方式,使用这些变量的部分甚至不会呈现,除非相应的变量已经初始化,但我将添加这些检查以防万一。另外,我只是想验证一下我是否以正确的方式处理了这个仪表板视图……我在工作中使用了类似于C#的东西,但从Rails开始,很难找到简单易懂的例子来说明我想做的事情;这是否意味着我正确地假设如果render_personal为false,那么实例变量将不会初始化?是的,这是正确的。只需在视图中执行:
如果@all\u attribs.blank?
@all\u attribs.nil?
即可处理该情况非常感谢!按照我的设置方式,使用这些变量的部分甚至不会呈现,除非相应的变量已经初始化,但我将添加这些检查以防万一。另外,我只是想验证一下,我是以正确的方式处理这个仪表板视图的……我在工作时在C#中维护了一些类似的东西,但从Rails开始,很难找到简单易懂的例子来说明我想做的事情。