0

我正在尝试在待办事项列表上实现一个简单的“标记为完整”功能,但根据我的应用程序设置有困难。我开始了一个将任务嵌套在列表中的教程,我的处理方式略有不同,但无法找出正确的路线。

我没有嵌套但简单的关联,即用户有很多任务,任务属于用户。我的任务表中有一个已完成的(布尔值)列

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

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 %>

有任何想法吗 ?

4

1 回答 1

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 %>

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

于 2013-07-22T01:58:53.340 回答