我在rails上做了一个简单的待办事项列表应用程序。
基本上,我已经在创建任务时实现了AJAX。但是,要关闭任务,需要执行更新操作。我的目标是在创建一个使用AJAX执行的任务后立即使用AJAX进行更新。现在我只能在刷新后用AJAX执行更新。
我这里有两个单独的js.erb文件,用于显示相应操作的AJAX。
create.js.erb
<% if @item.valid? %>
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");`
$('.item-list').append("<%= j (render(@item)) %>");
<% else %>
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");
<% end %>
update.js.erb
<% if @item.completed? %>
$('#item-' + <%= @item.id %>).addClass("strikethrough");
<% else %>
$('#item-' + <%= @item.id %>).removeClass("strikethrough");
<% end %>
Items_Controller
class ItemsController < ApplicationController
respond_to :html, :js
def create
@item = Item.new(item_params)
@user = User.find(params[:user_id])
@item.user_id = @user.id
@item.save
respond_to do |format|
format.html
format.js
end
end
def update
@item = Item.find params[:id]
user = User.find params[:user_id]
@item.update(completed: params[:item][:completed])
respond_to do |format|
format.html {render 'items/update.js.erb'}
format.js {render 'items/update.js.erb'}
end
end
如果需要,这是我repo的链接。
答案 0 :(得分:0)
现在只是代码重构
<% if @item.valid? %>
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");`
$('.item-list').append("<%= j (render(@item)) %>");
<% else %>
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");
<% end %>
到
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");
<% if @item.valid? %>
$('.item-list').append("<%= j (render(@item)) %>");
<% end %>
:)
你的答案是: 我想,你的JS函数在创建之后没有绑定,但是在重新绑定页面后它是绑定的