#<TopFood:0x007fdfd5e0f4e0> 没有方法错误未定义的方法“查找”

No method error undefined method `find' for #<TopFood:0x007fdfd5e0f4e0>

我遇到错误

NoMethodError in Data#input

Showing /home/adijanuarsyah/Projects/Food/app/views/data/_idfood.html.erb

where line #8 raised:

undefined method `find' for #<TopFood:0x007fdfd558fa90>

当我使用 find 方法获取查询 food = foods.find(rand_number) 时,我遇到了上面的错误,但是当使用 TopFood.find(rand_number),它的工作完美。

这是我的看法

<h2>Suggestion Indonesian top dishes</h2>
<ul id="foodList">

        <% TopFood.where(:country => "ind").find_each do |foods |  %> 
        <% rand_number = rand(52) + 1 %> 
            <% @food = foods.find(rand_number)%>
                <li><%= @food.name  %></li> 
            <% puts @food.inspect %> 
    <% end %>

</ul>
<div id="loadMore">More sugesstions</div>
<div id="showLess">Show less</div>

关于这里发生的事情有什么线索吗?

谢谢。

find是一个class方法,不能在foods.

这样的实例上调用

要修复您的代码,您可以这样做:

<% TopFood.where(:country => 'ind', :id => rand(52) + 1).find_each do |food| %> 
  <li><%= food.name %></li> 
  <% puts food.inspect %> 
<% end %>

如果您想以随机顺序显示结果,您可以这样做:

如果你的数据库是MySQL:

<% TopFood.where(:country => 'ind').order('RAND()').find_each do |food| %>

如果您的数据库是 PostgreSQL 或 SQLite:

<% TopFood.where(:country => 'ind').order('RANDOM()').find_each do |food| %>