Todo リスト アプリを 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はどこから来たのですか?質問が不明確な場合は教えてください。言い換えてみます。明確にするために、私のコードは機能しますが、その理由がわかりません。