没有方法错误未定义方法`find&#39;对于#<topfood:0x007fdfd5e0f4e0>

时间:2015-05-09 14:30:34

标签: ruby-on-rails ruby database nomethoderror

我收到了错误

NoMethodError in Data#input

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

第8行引出:

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

当我使用find方法获取查询食物= 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>

关于这里发生了什么的任何线索?

感谢。

1 个答案:

答案 0 :(得分:0)

find是一个类方法,无法在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| %>