简单的待办事项列表应用程序。在没有 ajax 的情况下难以将任务标记为完成。我的方法是在任务模型中创建一个“已完成”列,它是一个布尔值。然后在控制器中定义完整和不完整的任务,并相应地创建路由。这似乎不起作用,我不知道为什么。如果我做错了,有人可以告诉我吗?我愿意接受建议和替代方案。干杯。
具有范围选项的任务模型。
class Task < ActiveRecord::Base
validates_presence_of :title
#validates_presence_of :user_id
default_scope -> { order('created_at DESC') }
belongs_to :user
scope :completed, where(:completed =>true)
scope :incomplete, where(:completed =>false)
end
路由文件
match '/tasks/complete/:id' => 'tasks#complete', as: 'complete_task', via: :put
match '/tasks/complete/:id' => 'tasks#incomplete', as: 'incomplete_task', via: :delete
任务控制器
def complete
@task = current_user.tasks.find(params[:id])
@task.completed = true
@task.save
redirect_to current_user
end
def incomplete
@task = current_user.tasks.find(params[:id])
@task.completed = false
@task.save
redirect_to current_user
end
任务索引视图
<h3>Incompleted tasks</h3>
<% current_user.tasks.incomplete.each do |task| %>
<p><%= task.title %>|
<%= link_to "Done", complete_task_path(task), method: :put %></p>
<% end %>
<h3>Completed tasks</h3>
<% current_user.tasks.completed.each do |task| %>
<p><%= task.title %>|
<%= link_to "Undo", incomplete_task_path(task), method: :delete %></p>
<% end %>
我也在运行rails 4。