Turbolinks不允许我在不重新加载页面的情况下提交表单

Ale*_*kov 5 ruby-on-rails turbolinks

我正在使用带有Turbolink的bootstrap 3,问题是,当我在编辑表单中按Submit按钮时,什么也没发生,但是如果我重新加载页面,则每个输入都可以提交。我不明白为什么会这样,我什至没有在表单中使用javascript。这是代码:

<div class = "row">
  <%= semantic_form_for @post do |f| %>
  <%= f.semantic_errors %>
  <div class = "form-group">
    <div class = "col-lg-9 col-md-7">   
      <%= f.input :title, :label => "Title" %>
      <%= f.input :content, :as => :rich, :allow_embeds => true %>
      <%= f.input :cat_list, :label => "Type your tags here" %>
    </div>
  <div class = "col-lg-3 col-md-4 ">
      <p>
      <%= image_tag(@post.thumbnail.url(:original), :class => "img-thumbnail") %>
      </p>
      <p>
      <%= f.input :thumbnail, as: :file %>
      </p>
      <p>
      <%= f.select :tag_list, Post::Tags, { }, { :multiple => true, :size => 10, :class => "form-control" } %>
      </p>
    </div>
  <%= f.action :submit, :as => :button, :button_html => { :class => "btn btn-primary" } %>
</div>
  <% end %>
<%= link_to 'Show', @post %> |
<%= link_to 'Back', posts_path %>
Run Code Online (Sandbox Code Playgroud)

这是我的application.js的内容:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

rav*_*rav 1

我对 Turbolinks 的经验是,最好总是向提交表单按钮添加一个侦听器,例如:

$('document').on 'click', '.submit-btn', ->
    $('form').submit()
Run Code Online (Sandbox Code Playgroud)

原因是因为一些 JS/UJS 与 Turbolinks 发生冲突,特别是 $('document').ready() 函数的冲突,因为 Turbolinks 不会刷新头部的 JS,它只替换正文。

如果您有 $('document').ready,您可以将其替换为 Turbolinks 自定义侦听器(还有其他几个)

$(document).on('page:load', ready)
Run Code Online (Sandbox Code Playgroud)