我有一个对象列表,每个对象我有2个链接 - “删除”和“完成”。像这样:
1)买西红柿;删除|做
2)洗车;删除|完成
但我的自定义操作done
不起作用。我需要你的帮助,我该如何进行操作以及我应该在文件routes.rb
中编写哪些代码?
控制器:
def done
@task = Task.where(id: params[:id])
@task.done = true
redirect_to "/tasks"
end
查看文件中的链接:
<%= link_to "Done", {:controller => :tasks, :action => :done, :id => task.id}%>
谢谢!
答案 0 :(得分:3)
您正在分配值但不保存数据。因此,请使用@task.save
def done
@task = Task.where(id: params[:id])
@task.done = true
@task.save
redirect_to "/tasks"
end
答案 1 :(得分:2)
在您的控制器中:
def done
@task = Task.find(params[:id])
@task.done = true
@task.save! # Use the 'bang' method or check the return value
redirect_to tasks_path
end
在routes.rb中:
resources :tasks do
get :done, on: :member
end
在您看来:
<%= link_to 'Done', done_task_path(task.id) %>