rails中未定义的方法`each'

时间:2014-05-19 06:59:06

标签: ruby-on-rails

在rails项目中,我使用下面的代码从数据库中的Assignmenttable检索数据并显示给用户:

views/assignmenttables/_form.html.erb

<% task_list = Assignmenttable.find_by_current_user_id(user.id) %>
  <% if task_list.blank? %>
  <h1>It's blank</h1>
  <% else %>
    <% task_list.each do |task| %>
        <%= task.id %>
    <% end %>
<% end %>

数据从数据库中正确检索,如果task_list不是空的,则此代码是正确的,但当task_list为空时,我会收到以下错误:

undefined method `each' for #<Assignmenttable:0x000000069541c8>

我该如何处理这个错误?

1 个答案:

答案 0 :(得分:1)

你得到的错误是因为你调用.each方法的对象不是一个集合(多个) - 它是单数的


<强>其中

解决此问题的方法是使用.where方法调用您的数据:

<%= task_list = Assignmenttable.where(user_id: current_user.id) %>

-

<强>协会

或者更好的方法是重构代码以使用使Rails如此吸引人的ActiveRecord关联:

#app/models/user.rb
has_many :assignments

#app/models/assignment.rb # -> notice the name
belongs_to :user

current_user.assignments #-> allows you to call this in views

-

型号名称

您需要考虑的另一件事是您的模型名称需要使用CamelCaseAssignmentTable