0

我有一个表格remote => true。当我第一次提交时,一切正常。

如果有任何错误,我想在此表单中添加新字段。我用update.js.erb.

问题是当我重新提交此表单时,结果 js 文件呈现为 html(即我在屏幕上看到 js 文件文本)。这是update.js.erb第一次呈现为 js 的同一个文件...

知道我缺少什么吗?

更新:第一次尝试时,格式为:

format
=> #<ActionController::MimeResponds::Collector:0xc61711c
 @order=[text/javascript],
 @responses={text/javascript=>nil}>

在第二次提交时,它是:

format
=> #<ActionController::MimeResponds::Collector:0xceaadec 
@order=[], 
@responses={}>

我的 update.js 基本上就是

$("#checkout_modal").html("<%= escape_javascript(render 'plan_pay_modal')%>"); 

并且 plan_pay_modal 与原始页面上的部分相同(如果有错误,将显示新字段的表单。我也尝试了相同的字段问题)。

4

2 回答 2

1

原来问题是我是通过jquery提交的

form$.get(0).submit()

在这种情况下不起作用...要开始工作,我必须使用

form$.trigger("submit.rails")

rails 3 如何使用 jquery 提交远程表单并避免回调

于 2012-09-12T18:41:46.817 回答
0

如果您在 Web 浏览器中看到 javascript 作为内容,则意味着您的浏览器发送的请求是普通的 html 请求,而不是 ajax 请求。这反过来意味着表单由于某种原因在您第二次提交时未设置为 :remote => true 。我建议您调查一下为什么会这样或粘贴一些代码,以便我可以进一步帮助您。

您可以通过在控制器操作中做出这样的响应来验证我所说的是否正确:

respond_to do |format|  
  format.html  { raise "Request is not ajax based!" }
  format.js { render 'update' }
end 

编辑:

第二个帖子看起来不正确,因此 update.js.erb 可能会修改表单,使其无法再正常工作。为什么不渲染以前在模态中的相同内容。换句话说,最初在页面上您在模态中显示部分内容,然后 update.js.erb 只是重新呈现该部分内容并替换模态内容。如果有错误,您可以在部分中激活新添加的动态字段。

于 2012-09-12T15:36:45.967 回答