Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActionView::Template::Error(未定义的方法`each';用于nil:NilClass):?_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails ActionView::Template::Error(未定义的方法`each';用于nil:NilClass):?

Ruby on rails ActionView::Template::Error(未定义的方法`each';用于nil:NilClass):?,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我在ruby on rails项目中有一个服务模型,但我无法在项目的主页视图中呈现它,我得到了一个未定义的方法'each',用于nil:NilClass,尽管我在Servicecontroller中定义了变量- 我的ServicesController文件- class ServicesController < ApplicationController def show @services = Service.all end end class-ServicesCont

我在ruby on rails项目中有一个服务模型,但我无法在项目的主页视图中呈现它,我得到了一个未定义的方法'each',用于nil:NilClass,尽管我在Servicecontroller中定义了变量-

我的ServicesController文件-

class ServicesController < ApplicationController
  def show
    @services = Service.all
  end
end
class-ServicesController
我的节目档案-

<div class="container">

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

我们提供的服务-

我的show file of services视图的路径是-
app\views\services\\u show.html.erb
,我将它呈现在我的页面视图
app\views\pages\home.html.erb
中,作为
,尽管我能够使用@services=Service.all命令查看rails控制台中的所有服务,但我仍然收到错误


有人能帮我一下吗?

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

如果希望
@services
实例变量在
home.html.erb
视图中可用,则需要在
PagesController\home
中设置该数据

如果您在正确的操作中设置了变量,然后在
主视图
中渲染一个分部,beit
\u show
或另一个分部,您将能够访问该变量

尝试以下方法:

class PagesController < ApplicationController
  ...

  def home
    @services = Service.all
  end
end
class PagesController
您在错误的控制器和操作中设置了变量

如果希望
@services
实例变量在
home.html.erb
视图中可用,则需要在
PagesController\home
中设置该数据

如果您在正确的操作中设置了变量,然后在
主视图
中渲染一个分部,beit
\u show
或另一个分部,您将能够访问该变量

尝试以下方法:

class PagesController < ApplicationController
  ...

  def home
    @services = Service.all
  end
end
class PagesController
如果要设置实例变量
@services=Service.all
当请求由
PagesController\home
处理时,您需要在该方法中实际设置实例变量。在另一个控制器中设置实例变量完全没有任何作用。rails中的
show
显示一条记录<代码>索引
对应于一组记录。谢谢你,它起作用了,我移动了@services=Service。所有这些都在我的页面中,它起作用了。谢谢如果您想设置实例变量
@services=Service.all
当请求由
PagesController\home
处理时,您需要在该方法中实际设置实例变量。在另一个控制器中设置实例变量完全没有任何作用。rails中的
show
显示一条记录<代码>索引对应于一组记录。谢谢你,它起作用了,我移动了@services=Service。所有这些都在我的页面中,它起作用了。谢谢谢谢,我还有一个问题,如果我不想将我的显示文件命名为“\u show.html.erb”,而是想将其命名为“show.html.erb”,那么如何呈现这样的文件呢?如果这是一个局部视图(将在另一个视图中呈现的视图的一部分),则按照惯例,将其命名为以
\u
开头。在这种情况下,将其命名为
show
可能不是一个好主意,因为这是
ServicesController#show
操作在尝试呈现其关联视图时将搜索的名称。谢谢,我还有一个问题,如果我不想将我的显示文件命名为“\u show.html.erb”,而是希望它命名为“show.html.erb”,那么如何渲染它呢?如果这是一个局部视图(将在另一个视图中渲染的视图的一部分),则按照惯例,将其命名为以
开头。在这种情况下,调用它
show
可能不是一个好主意,因为这是
ServicesController#show
操作在尝试呈现其关联视图时将搜索的名称。