Rails Best_in_place ajax:成功无法识别

时间:2015-05-18 22:17:34

标签: ruby-on-rails ajax coffeescript best-in-place

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) ->
  ...

有关如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:1)

问题已解决。问题不在于ajax:成功没有解雇,这是因为(原因仍然未知)我必须阅读ajax:在桌子体层而不是有问题的桌面细胞处取得成功。显然这是一个常见的问题,在最初加载后向DOM添加新元素时,需要读取ajax:在DOM上方成功。

感谢那些提供意见的人。

答案 1 :(得分:0)

你正在使用turbo链接吗?我认为最好的位置绑定到文件准备就绪,如果你使用turbo链接,它会行事。如果是这样,请将其从application.html.erb和application.js文件中删除,然后重试。