【发布时间】:2014-05-09 13:40:54
【问题描述】:
我正在练习书中的一个教程。在本教程中;需要在某些视图中显示来自几个模型的所有值。这些实例变量是在application_controller.rb 中的sidebar_values 方法下定义的:
helper_method :sidebar_values
def sidebar_values
@food_prefs = FoodPreference.all
@food_types = FoodType.all
@cuisines = Cuisine.all
end
这里是application.html.erb的部分:
<div class="col-lg-2">
<div class="panel panel-primary" id="panels">
<div class="panel-heading">
Food Preferences
</div>
<% @food_prefs.each do |p| %> #42, error begins here
<p><%= p.name %></p>
<% end %>
</div>
<div class="panel panel-primary" id="panels">
<div class="panel-heading">
Food Types
</div>
<% @food_types.each do |t| %>
<p><%= t.name %></p>
<% end %>
</div>
<div class="panel panel-primary" id="panels">
<div class="panel-heading">
Cuisines
</div>
<% @cuisines.each do |c| %>
<p><%= c.name %></p>
<% end %>
</div>
</div>
当我试图在视图中调用这些变量时,它会抛出如下错误:
NoMethodError - undefined method `each' for nil:NilClass:
app/views/layouts/application.html.erb:42:in `_app_views_layouts_application_html_erb___4138475832854219665_70001190164060'
这些变量中的值不是nil,但是我无法从任何视图调用这些变量。
【问题讨论】:
-
发表你的看法
code -
您在哪一行收到该错误?
-
@Pavan 42 问题已更新
-
你真的把这个方法称为
sidebar_values吗?喜欢before_filter :sidebar_values或在您的操作中?似乎您没有调用它,因此它没有设置实例变量——另外,我不明白为什么必须将其设为辅助方法,因为这些分配(以@开头的实例变量)是通常在控制器中设置.. -
在代码中很难找到第42行。能否请您突出显示错误行?
标签: ruby-on-rails ruby-on-rails-4 helper activemodel