我有一个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哲学也不好(:
谢谢!
答案 0 :(得分:0)
您的问题是在修改DOM以包含表单标记之前运行脚本。您可以使用.on()
jQuery function(有时候很棘手)或在加载表单后调用您应该在edit.js.coffe
transaction.js.coffee
)