本地主机中的 NoMethodError:3000

Posted

技术标签:

【中文标题】本地主机中的 NoMethodError:3000【英文标题】:NoMethodError in localhost:3000 【发布时间】:2016-12-15 20:41:21 【问题描述】:

我一直在使用 Rails 服务器预览我对在 gh 上共享给我的网站代码所做的一些 html/css 更改,但我无法访问某些页面,因为我收到此错误:

/media 处的 NoMethodError nil:NilClas 的未定义方法“each”

这是来自用户个人资料中的功能的页面;我在终端中创建了一个假用户,因此我可以访问个人资料页面,但我想要的个人资料页面给出了该错误。

这是代码的一部分:

  <div class="select_wrapper">

      <select name="trienal_id" id="" required>

      <option value="" disabled>Trienal</option>

      **<% Subject.where(discipline_type: 0)[1..3].each do |s| %>**

            <option value="<%= s.id %>" <%= "selected" if @tri_id==s.id %>><%= s.name %></option>

            <% end %>

       </select>

 </div>

【问题讨论】:

你提到你做了一个假用户。你也需要制作虚假的主题吗? 【参考方案1】:

在 irb ($ irb) 试试这个

> x = []
> x[0]
=> nil
> x[1]
=> nil

所以您的查询Subject.where(discipline_type: 0) 很可能返回blank array [],然后是[1..3],结果是nil,然后是each,这将导致undefined method each for nil:NilClas

您应该使用limit 函数(它指定了要检索的记录数的限制) 例如

Subject.where(discipline_type: 0).limit(3)

所以你的代码应该是这样的

<% Subject.where(discipline_type: 0).limit(3).each do |s| %>
  <option value="<%= s.id %>" <%= "selected" if @tri_id==s.id %>><%= s.name %></option>
<% end %>

【讨论】:

【参考方案2】:

Subject.where 返回的记录可能少于您的范围索引指定的记录。不知道为什么你在那里有[1..3]。在您的 Subject.where 上使用 each,如果您需要根据条件对其进行更多限制,请添加到 where 子句。

<% Subject.where(discipline_type: 0).each do |s| %>
   <!-- your code here -->
<% end %>

【讨论】:

以上是关于本地主机中的 NoMethodError:3000的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dio 从本地主机:3000 切换到准备在 Flutter 中生产的东西?

从本地主机获取 Json [重复]

ngrok - 获取到本地主机服务器的所有路由

在 3000 端口主机提供的 IP 上绑定 rails app

在我的本地主机 Rails 上查看我的 404 页面

Ngrok > Nginx > 本地主机端口