.js文件在新呈现的表单中不起作用

时间:2013-07-20 17:38:36

标签: javascript jquery

我有一个Transaction模型,其中包含两种用于创建和编辑Transaction的表单。它们都是remote: true。 表格实际上是相同的,只有很小的差异,因此它们大多数具有相同的类和ID的相同标签。

按钮,字段,表单下拉列表的所有行为都在transaction.js.coffee文件中描述。

我的edit.js.coffee是:

$('#new_transaction').remove()
$('#t_table').before('<%= j render 'edit_form' %>')
$('#edit_transaction_<%= @transaction.id %>').slideDown 'fast'
来自控制器的

edit动作也非常简单:

def edit
  @transaction = current_user.transactions.find(params[:id])
  respond_to do |format|
    format.html { redirect_to root_url }
    format.js
  end
end

因此,当用户点击“修改”按钮时,来自edit.js.coffee的代码会移除new_transaction并在同一位置呈现edit_transaction表单。

transaction.js.coffee中的所有行为都不适用于这种新形式。 如果我将其复制到edit.js.coffee,它就可以了。但这对我来说并不好,因为我需要在两个地方改变代码,对Rails的所有DRY哲学也不好(:

谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题是在修改DOM以包含表单标记之前运行脚本。您可以使用.on() jQuery function(有时候很棘手)或在加载表单后调用您应该在edit.js.coffe

中定义的函数(transaction.js.coffee