Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 局部视图中未使用的变量需要显式设置为nil_Ruby On Rails - Fatal编程技术网

Ruby on rails 局部视图中未使用的变量需要显式设置为nil

Ruby on rails 局部视图中未使用的变量需要显式设置为nil,ruby-on-rails,Ruby On Rails,我在部分中这样做是为了构建面包屑指示: .header-section %ul.breadcrumb.breadcrumb-top %li %i.fa.fa-home -if !level1.nil? %li =level1 -if !level2.nil? %li =level2 level2并不总是被使用。然而,当我像这样调用partial时: = ren

我在部分中这样做是为了构建面包屑指示:

  .header-section
    %ul.breadcrumb.breadcrumb-top
      %li
        %i.fa.fa-home
      -if !level1.nil?
        %li
          =level1
      -if !level2.nil?
        %li
          =level2
level2并不总是被使用。然而,当我像这样调用partial时:

= render :partial => 'layouts/info_header', :locals => {:title => 'Your clients', :level1 => link_to('Clients', clients_path) }
我收到以下错误消息:

undefined local variable or method `level2'
我需要这样称呼它以避免它:

= render :partial => 'layouts/info_header', :locals => {:title => 'Your clients', :level1 => link_to('Clients', clients_path), :level2 => nil }

为什么会这样?如果没有使用,我不想显式地将nil赋值给level2。

您不能对未定义的变量调用
nil?
。尝试定义

- if defined?(level2) && !level2.nil?
    %li
        = level2

另一种选择是将数组传递给局部变量,并在该数组上进行迭代,使其稍微干涸

= render partial: 'layouts/info_header', locals: { title: 'Your clients', levels: [link_to('Clients', clients_path), link_to('Something else', something_else_path)] }
在部分中,您可以执行以下操作:

- if levels.any?
  - levels.each do |level|
    %li= level
您可以更深入地了解它,定义一个助手方法来生成levels数组,这将进一步清理视图