本地主机中的 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 中生产的东西?