我有一个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 哲学(:
谢谢!