在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>
我该如何处理这个错误?
答案 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
-
型号名称
您需要考虑的另一件事是您的模型名称需要使用CamelCase(AssignmentTable
)