标记任务完成

时间:2013-07-22 01:45:40

标签: ruby-on-rails ruby

我正在尝试在待办事项列表上实现一个简单的“标记为完整”功能,但基于我的应用设置有困难。我启动了一个将任务嵌套在列表中的教程,我对它的看法略有不同,但无法弄清楚正确的路径。

我没有嵌套但是简单的关联,即用户有许多任务和任务属于用户。我的任务表中有一个完整的(布尔)列

我的任务控制器中的完整操作

def complete
 @task = current_user.tasks.find(params[:id])
 @task.completed = true
 @task.save
 redirect_to tasks_path
end

路线档案

match '/tasks/complete' => 'tasks#complete'

索引视图

<% current_user.tasks.each do |task| %> 
 <%= task.description %> | <%= link_to "Complete", complete_task_path(task) %>
<% end %>

任何想法?

1 个答案:

答案 0 :(得分:0)

尝试使路线文件中的行看起来像:

match '/tasks/complete' => 'tasks#complete', as: 'complete_task'

请注意,这可能会执行您要查找的内容,但由于HTTP GET请求默认不会受到跨站点请求伪造攻击的任何保护,因此不安全。除此之外,一般来说,您只想使用HTTP GET请求进行读取,而不是像在此处一样进行写入/更新。使用HTTP PUT可能更合适。您可以像这样调整路线:

match '/tasks/complete' => 'tasks#complete', as: 'complete_task', via: :put

...然后做这样的事情:

<%= task.description %> | <%= link_to "Complete", complete_task_path(task), method: :put %>

我没有完全测试上述内容,但应该让你朝着正确的方向前进。