【发布时间】:2014-01-08 20:59:47
【问题描述】:
我有一个通过 ajax 呈现的表单。该表单还使用 ajax 提交。提交表单时,它会执行两次发布请求。
当有人点击“创建个人资料”链接时,表单会通过链接旁边的 ajax 呈现。显示表单时,我需要在视图文件的开头包含一些 javascript,因为表单需要这些 js 文件。这是表格:
<%= javascript_include_tag "/assets/temp_js/jquery-1.8.3.min.js" %>
<%= javascript_include_tag "/assets/jquery_ujs.js" %>
<%= javascript_include_tag "/assets/temp_js/jquery.jscrollpane.min.js" %>
<%= javascript_include_tag "/assets/temp_js/jquery.c2selectbox.js" %>
<%= javascript_include_tag "/assets/temp_js/jquery.colorbox-min.js" %>
<%= javascript_include_tag "/assets/temp_js/functions.js" %>
<%= form_for @profile, :html => { :class => "clearfix" }, remote: true do |f| %>
<%= f.text_area :description, :title => "Describe yourself and what you do." %>
<%= f.file_field :pic, :class => "field file-field", :id => "file" %>
<%= f.submit "SAVE" %>
这些文件已经在 application.html.erb 文件中加载到页面上,但是在显示表单时需要再次加载它们,因为表单中的元素需要 javascript。唯一的问题是两个顶级 javascript 文件由于某种原因导致表单发布两次。我无法摆脱它们,因为表单需要它们,但表单与它们一起提交了两次。有谁知道如何解决这个问题?
我看到一些堆栈溢出页面说我应该删除资产文件夹中的 js 文件,但我需要它们用于表单。我还读过将“config.serve_static_assets = false”添加到 development.rb 将解决问题,但它没有。
提前致谢。
更新:
问题肯定与 jquery_ujs.js 文件有关。如果我从上面的表单代码中删除它,它不会执行两次。
【问题讨论】:
-
您可以尝试不发送文件吗?在您的 html 中缺少多种形式吗?据我所知,您需要它来传输文件。
-
谢谢,试过了,但没有解决。另外,当我测试它并通过表单时,我没有提交图片。
-
您对表单提交还有其他绑定吗?使用浏览器控制台。
-
我在 Firefox 的控制台中。如何检查某些内容是否绑定到表单提交?
-
最简单的方法是首先禁用除 jquery 和 jquery_ujs 之外的其他库
标签: javascript ruby-on-rails ajax jquery asset-pipeline