Ruby on rails Rails 3任务范围?
我正在开发一个简单的rails 3 todo应用程序,我试图通过已完成的任务和未完成的任务来过滤应用程序,但每当我尝试调用范围时,就会收到错误消息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
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| %>