【问题标题】:Rails 3 form_for is set to remote: true but the request is still submitted as HTMLRails 3 form_for 设置为 remote: true 但请求仍以 HTML 提交
【发布时间】:2018-02-05 23:37:27
【问题描述】:

我有一个 form_tag,我已将远程设置为 true,但表单仍以 HTML 格式提交

这是我得到的:

    <%= form_tag('/permissions/update_resource', remote: true, method: :post) do %>
    
    <!-- Form goes here -->
    
<% end %>

这反过来会生成如下所示的 HTML:

<form accept-charset="UTF-8" action="/permissions/update_resource" data-remote="true" method="post">
<!-- form goes here -->
</form>

问题是提交表单时,请求以 HTML 格式通过。知道这里可能有什么问题吗?我完全不知所措。

我在同一页面上收到了简单的 AJAX 请求,所以我很确定我的 Rail 应用程序配置正确...

【问题讨论】:

  • 你确定你安装了jquery-data-remote npm 包吗?它不是默认的 jquery
  • 我有这个 jquery 库:$ dpkg --list | grep -i jquery ii libjs-jquery 1.11.3+dfsg-4 all JavaScript library for dynamic web applications 我还安装了 jquery-rails gem: $ gem list | grep -i jquery jquery-rails (3.1.4) 我可以创建一个链接并将其作为 XHR 提交,所以我不认为系统包是罪魁祸首

标签: jquery ruby-on-rails ajax


【解决方案1】:

确保安装 jquery-rails-gem 并在您的 js-manifest 中包含 jqueryjquery_ujs -文件(在assets/javascripts/application.js) - 例如像这样:

//= require jquery
//= require jquery_ujs

更多详情(包括通过 npm 的替代安装说明)请查看 jquery-ujs - Ruby on Rails unobtrusive scripting adapter for jQuery

【讨论】:

    【解决方案2】:

    显然我的问题在于我如何提交表单。我在 select_tag 中的代码中有这个:

    onchange: "this.form.submit();"

    不知何故,这使得表单提交为 html。我将此行更改为:

    onchange: "$('#update_resource_#{resource.id}').submit();"

    然后砰! - 表单作为 js 提交 我仍然不知道为什么:-( 有没有人解释一下,不胜感激!

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多