ruby-on-rails - 链接对象上的自定义操作

时间:2014-03-14 20:54:17

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

我有一个对象列表,每个对象我有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}%>

谢谢!

2 个答案:

答案 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) %>