我正在尝试将我的待办事项列表应用程序转换为使用 AJAX 。这是我对 TasksController 的更新操作:
class TasksController < ApplicationController
def update
@list= List.find(params[:list_id])
@task=@list.tasks.find(params[:id])
@task.update_attributes(params[:task])
respond_to do |format|
format.html { redirect_to [current_user,@list], notice: 'Task completed' }
format.js
end
end
end
任务/update.js.erb :
<% if @task.completed? %>
$('#edit_task_<%= @task.id %>').appendTo('#completed_tasks');
<% else %>
$('#edit_task_<%= @task.id %>').appendTo('#incomplete_tasks');
<% end %>
这是我的列表/show.html.erb,它列出了特定列表的所有任务:
<h3>Unfinished Tasks</h3>
<div class="tasks" id="incomplete_tasks">
<% @list.tasks.incomplete.each do |task| %>
<%= form_for [current_user,@list,task], remote:true do |f| %>
<%= f.check_box :completed %>
<%= f.submit %>
<%= f.label :completed, task.description %>
<% end %>
<% end %>
</div>
<h3>Finished Tasks</h3>
<div class="tasks" id="completed_tasks">
<% @list.tasks.completed.each do |task| %>
<%= form_for [current_user,@list,task], remote: true do |f| %>
<%= f.check_box :completed %>
<%= f.submit %>
<%= f.label :completed, task.description %>
<% end %>
<% end %>
<div class="tasks" id="completed_tasks">
<% @list.tasks.completed.each do |task| %>
<%= form_for [current_user,@list,task], remote: true do |f| %>
<%= f.check_box :completed %>
<%= f.submit %>
<%= f.label :completed, task.description %>
<% end %>
<% end %>
</div>
所以,我不太了解 tasks/update.js.erb 代码。
$('#edit_task_').appendTo('#completed_tasks');
在上面的代码中,我们从哪个 html 文件中获取了这个 div 的内容:
那个 div 来自哪里?如果我的问题不清楚,请告诉我,我会尝试改写它。为了清楚起见,我的代码有效,但我不知道为什么?