【问题标题】:Undefined method when updating boolean更新布尔值时未定义的方法
【发布时间】:2018-06-25 13:16:38
【问题描述】:

我目前正在开发一个待办事项应用管理器。

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

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

有人知道这里有什么问题吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

    查看completeincomplete 方法中的第一行:

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

    tasks 没有在任何地方定义,因此出现错误。 #find方法在ActiveRecord中是一个类方法,所以你要做的是

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

    【讨论】:

    • 或者他们的意思是@tasks
    • 确实......现在你已经说过了。谢谢,我想这会是更深层次的东西。而且您的解决方案效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多