更新布尔值时未定义的方法

时间:2018-06-25 13:16:39

标签: ruby-on-rails ruby

我目前正在从事待办事项应用经理。

我的任务模型有一个描述和一个布尔值,默认情况下为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

我尝试更改变量,但是此错误仍然相同。

有人知道这是怎么回事吗?

1 个答案:

答案 0 :(得分:2)

这里的错误非常明显:您正在调用未定义的方法或变量。

查看您的completeincomplete方法的第一行:

@task = tasks.find(params[:id])

tasks在任何地方都没有定义,因此会出错。在ActiveRecord中,#find方法是一个类方法,因此您要做的是

@task = Task.find(params[:id])