ruby-on-rails - 带远程的 form_tag : true does not make an ajax request

标签 ruby-on-rails ruby-on-rails-3 jquery

我的应用程序中有许多不同的表单,它们都使用 remote: true。但其中一个无法正常工作,因为它不使用 ajax 调用。

清理后,看起来像:

<%= form_tag(upload_file_ajax_path, remote: true, multipart: true) do %>
  <%= file_field_tag(:file) %>
  <%= submit_tag("upload") %>
<%end%>

标签看起来像:

<form accept-charset="UTF-8" action="/mycontroller/upload_file_ajax" data-remote="true" enctype="multipart/form-data" method="post">
  <input name="utf8" type="hidden" value="✓">
  <input name="authenticity_token" type="hidden" value="1234"></div>
  <input id="file" name="file" type="file">
  <input name="commit" type="submit" value="upload">
</form>

以及路线条目:

post "mycontroller/upload_file_ajax", as: "upload_file_ajax"

但是在 Chrome 开发工具中检查调用,标题显示:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

并不像其他形式那样:

Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript

我将 js 文件添加到我的布局中

<%= stylesheet_link_tag    "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>

即使我从 application.js 文件中删除所有 JS 代码(//= require jquery... 除外),表单也无法正常工作。

我错过了什么?

最佳答案

您不能使用 AJAX 进行文件上传。也就是说,通常情况下。

有一个很棒的 gem ,Remotipart ,但这会将此功能添加到您的远程表单中。

gem 'remotipart', '~> 1.0'

在 application.js 中

//= require jquery.remotipart

关于ruby-on-rails - 带远程的 form_tag : true does not make an ajax request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11374897/

相关文章:

ruby-on-rails - 如何在不迁移的情况下从 rails 控制台重命名列?

ruby-on-rails - 如何让我的导航栏出现在我的 Rails 应用程序的每个页面上?

mysql - 轨道 3 : Search in a query result

jQuery 按 ID 选择失败并带有尾随连字符

java - ChartJS "Unable to get property ' getTime' 未定义或空引用”

javascript - 在 jquery 字符串中保留引号

ruby-on-rails - 重写设计::邮件程序不工作

ruby-on-rails - 在 bash 中匹配带有空白字符的字符串

ruby-on-rails - 与 Omniauth 一起设计。无法验证,因为 "Invalid credentials"。”

sql-server - Rails 3.2.8 - 一个 Rails 应用程序中的多个数据库访问