我目前正在从事待办事项应用经理。
我的任务模型有一个描述和一个布尔值,默认情况下为false。 单击“完成”时,布尔值应切换为true。
但是,我遇到了错误undefined local variable or method `tasks'
这是我的任务控制器:
def index
@tasks = Task.all
@task = Task.new
end
def complete
@task = tasks.find(params[:id])
@task.completed = true
@task.save
redirect_to root_path
end
def incomplete
@task = tasks.find(params[:id])
@task.completed = false
@task.save
redirect_to root_path
end
和我的索引:
<h3>Tâches à réaliser</h3>
<% @tasks.incomplete.each do |task| %>
<p><%= "#{task.description} | Créé le #{task.created_at.day}/#{task.created_at.month}" %>
<%= link_to "Done", complete_task_path(task), method: :put %><%= link_to ' Modifier', edit_task_path(task) %><%= link_to ' X', task, method: :delete, data: { confirm: 'Are you sure?' } %></p>
<% end %>
<h3>Tâches réalisées</h3>
<% @tasks.completed.each do |task| %>
<p><%= task.description %>|
<%= link_to "Undo", incomplete_task_path(task), method: :delete %></p>
<% end %>
和我的路线:
resources :tasks
root 'tasks#index'
match '/tasks/complete/:id' => 'tasks#complete', as: 'complete_task', via: :put
match '/tasks/complete/:id' => 'tasks#incomplete', as: 'incomplete_task', via: :delete
我尝试更改变量,但是此错误仍然相同。
有人知道这是怎么回事吗?
答案 0 :(得分:2)
这里的错误非常明显:您正在调用未定义的方法或变量。
查看您的complete
和incomplete
方法的第一行:
@task = tasks.find(params[:id])
tasks
在任何地方都没有定义,因此会出错。在ActiveRecord中,#find
方法是一个类方法,因此您要做的是
@task = Task.find(params[:id])