Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3任务范围?_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails Rails 3任务范围?

Ruby on rails Rails 3任务范围?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我正在开发一个简单的rails 3 todo应用程序,我试图通过已完成的任务和未完成的任务来过滤应用程序,但每当我尝试调用范围时,就会收到错误消息 undefined method `completed' for #<Array:0x007fe8420d0e58> index.html.erb 名称 描述 完成了 使用者 名称 task_controller.rb def complete @task = Task.find(params[:task_id]) @task.co

我正在开发一个简单的rails 3 todo应用程序,我试图通过已完成的任务和未完成的任务来过滤应用程序,但每当我尝试调用范围时,就会收到错误消息

undefined method `completed' for #<Array:0x007fe8420d0e58>
index.html.erb

名称 描述 完成了 使用者 名称 task_controller.rb

def complete
 @task = Task.find(params[:task_id])
 @task.completed = true
 @task.save
 redirect_to task_path
end
routes.rb

match "tasks/:id/complete" => "task#complete", :as => :complete_task

rails给我这个错误的原因是什么?

只需查看您的view index.html.erb,在一个地方,您将其视为一个关系

<% @tasks.each do |task| %>
在代码的后面,您将尝试将其作为单个对象访问

<% @tasks.completed.each do |task| %>
由于您在第二个实例上看到错误,因此需要访问“已完成”,如中所示:

<% @tasks.completed.each do |task| %>
  <% completed = task.completed %>
     <% completed.each do |com| %>

这有意义吗?

哪里定义了@tasks?我看到一个@task,但没有@tasks。@我应该用tasks替换task吗?@tasks是在某个地方定义的,或者您将得到一个NoMethodError:undefined方法'each',用于nil:NilClass。有些东西正在将@tasks创建为数组,而不是您所期望的ActiveRecord::关系。
<% @tasks.completed.each do |task| %>
  <% completed = task.completed %>
     <% completed.each do |com| %>