在 application.html.erb 中调用 post.title 会为 nil:NilClass 生成错误未定义方法“each”

calling post.title in application.html.erb generates error undefined method `each' for nil:NilClass

我在 application.html.erb 中有侧边栏。

<div class="well sidebar-nav">
        <h3>Rewards</h3>
        <% @rewards.each do |reward| %>
        <ul class="nav nav-list">
          <li class="nav-header"><%= reward.title %></li>
          <li><%= reward.price %></li>
          <li><%= reward.image_url %></li>
          <li><%= reward.details %></li>
          <li><%= reward.estimated_delivery %></li>
          <li><%= reward.claimed %></li>
        </ul>
        <% end %>
      </div><!--/.well -->

我通过以下方式生成奖励:rails g scafford 奖励 ....以下属性。

我的奖励视图运行良好。但是当我转到其他页面时,出现此错误

undefined method `each' for nil:NilClass

我知道这是因为我的 application.html.erb 正在 applicationcontroller 中寻找 @rewards 但它不在那里。但我不知道如何解决这个问题。

如果你想在整个应用程序范围内使用它,你应该在 application_controllerbefore_filter 中设置它:

class ApplicationController < ActionController::Base
  before_filter :set_rewards
  # ...
  private

  def set_rewards
    @rewards = #set your rewards here
  end
end