未定义的方法'each'for nil:NilClass错误的索引

时间:2019-08-08 20:22:45

标签: ruby-on-rails ruby

我创建了一个种子,可以通过事先在rails控制台中对其进行测试来确保工作。现在,我尝试在我的视图中显示实例变量@services,但是出现一个错误,提示它为零。

有什么想法吗?

谢谢

//home.html.erb

  <div>
    <% @services.each do |service| %>
    <%= service.name %>
    <% end %>
  </div>
//services_controller.rb
class ServicesController < ApplicationController
before_action :set_service, only: [:index, :show]

  def index
    @services = Service.all
  end

  def show
    set_service
  end

    private

  def set_service
    @service = Service.find(params[:id])
  end
end
//service.rb

class Service < ApplicationRecord
    validates :name, presence: true
    validates :description, presence: true
    has_many :reviews
end

这是正在呈现的错误

nil:NilClass的未定义方法“ each”

2 个答案:

答案 0 :(得分:1)

  1. 添加根URL映射,并将其指向服务索引操作,如notSynchronizedMethod()中的root 'services#index'
  2. config/routes.rb的内容移至home.html.erb
  3. views/services/index.html.erb更改为before_action :set_service, only: [:index, :show]

请参阅有关问题的评论:)

答案 1 :(得分:0)

更改此代码:

before_action :set_service, only: [:index, :show]

对此:

before_action :set_service, only: [:show]