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数组,这将进一步清理视图