My Rails应用程序包含一个类似Excel的可编辑表格,使用best_in_place字段。它们在页面加载时工作得非常好,我在用户编辑best_in_place字段后调用ajax:success
上的coffeescript函数没有问题。
由于这是类似Excel的表,因此用户可以单击链接以向表中添加新的占位符行。我的create.js.erb文件添加了没有页面重新加载的行。新行有几个具有best_in_place功能的表格单元格,并且更新它们会更新数据库,到目前为止一直很好。
问题在于,当用户随后在新行之一中编辑best_in_place字段时,ajax:success
不会触发,因此我的coffeescript函数不会启动。
我已经确认新表格单元格与现有表格单元格具有完全相同的类和数据属性(在类名称上读取ajax:success
)。
问题 - 在这种情况下,如果ajax:success
未被识别,我该如何启动我的coffeescript功能?
里程碑控制器,包括创建和更新操作
def create
@payment_schedule = PaymentSchedule.find(params[:id])
build_default_milestone # this builds a placeholder milestone
if @milestone.save
increment_milestone_positions # this relates to a sortable table
respond_to do |format|
format.js
format.html { redirect_to :back }
end
else
respond_to do |format|
format.js
format.html { redirect_to :back }
end
end
end
def update
@milestone = Milestone.find(params[:id])
respond_to do |format|
if @milestone.update(milestone_params)
update_milestone_amounts
format.html { redirect_to(:back) }
format.json { respond_with_bip(@milestone) }
else
format.html { redirect_to(:back) }
format.json { respond_with_bip(:back) }
end
end
end
Create.js.erb
$('#milestone-body').prepend('<%= escape_javascript(render partial: 'row_add', locals: { milestone: @milestone }) %>');
Coffeescript功能
update-percent
是所讨论的best_in_place字段的类名。此函数可以完美地激活现有行,而不是新行。
$('.update-percent').on 'ajax:success', (event, data, status, xhr) ->
...
有关如何解决此问题的任何建议?
答案 0 :(得分:1)
问题已解决。问题不在于ajax:成功没有解雇,这是因为(原因仍然未知)我必须阅读ajax:在桌子体层而不是有问题的桌面细胞处取得成功。显然这是一个常见的问题,在最初加载后向DOM添加新元素时,需要读取ajax:在DOM上方成功。
感谢那些提供意见的人。
答案 1 :(得分:0)