ActionView::Template::Error(nil:NilClass 的未定义方法“each”):?

ActionView::Template::Error (undefined method `each' for nil:NilClass):?

我在 ruby 项目的 ruby 中有一个服务模型,但我无法在页面中呈现它#home view of my project 我得到这个 [=27= nil:NilClass 的未定义方法 `each' 虽然我已经在我的 Servicecontroller-

中定义了变量

我的 ServicesController 文件-

class ServicesController < ApplicationController
  def show
    @services = Service.all
  end
end

我的节目文件-

<div class="container">

  <h3>Services we offer-</h3>
  <% @services.each do |service| %>
        <h5><%= service.name %></h5>
        <p><%= service.description %></p>
  <% end %>
</div>

我的服务视图显示文件的路径是这个- app\views\services\_show.html.erb 我在我的页面视图 app\views\pages\home.html.erb 中将它呈现为 <%= render 'services/show' %>,我仍然得到尽管我能够使用@services=Service.all 命令在rails 控制台中看到所有服务,但还是出现了错误。

有人可以帮我吗?

您在错误的控制器和操作中设置了变量。

如果您希望 @services 实例变量在 home.html.erb 视图中可用,您需要在 PagesController#home.

中设置该数据

如果您在正确的操作中设置变量,然后在 home 视图中渲染部分内容,无论是 _show 还是其他视图,您都可以访问该变量。

试试这样的:

class PagesController < ApplicationController
  ...

  def home
    @services = Service.all
  end
end