2014-05-19 45 views
1

在导轨项目中,我使用以下代码在数据库检索来自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 %> 

数据是从数据库中正确retrive,如果task_list不是空的这段代码是正确的,但是当task_list是空的,我得到以下错误:

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

我该如何处理这个错误?

+1

而且你有错误到你的问题描述,因为我认为当task_list将空白它不会给你错误,但当它不是空白,那么它会给你一个错误,因为find_by_something将总是只给出一个它不需要循环的记录。 –

+1

'find_by_'将生成限制1条记录..使用'where'方法 –

回答

1

你有因为对象你叫.each方法造成的错误不是一个集合(多) - 这是奇异


解决这个问题的办法是要么使用.where方法来调用您的数据:

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

-

协会

或者更好的办法将是重构你的代码使用ActiveRecord关联,这使得Rails的如此吸引人:

#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

相关问题