Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails5: form remote - trigger submit

Tags:

I have a form with remote option set. I need to trigger the submit programmatically.

In Rails 4 I use $('form').trigger('submit.rails') and it works as expected. In Rails 5 (5.1.2 and 5.0.4) triggering that event causes a standard submit (formdata, not AJAX).

For Rails staff 'submit.rails' is not part of Rails project, see here

Any idea?

UPDATE:

Form code:

<%= form_with(model: post, remote: true) do |form| %>
  <% if post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>
      <ul>
      <% post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>
like image 338
Mat Avatar asked Jul 19 '17 06:07

Mat


1 Answers

As stated in the comments thread, the jquery-rails gem needs to be included into your application.js file for things to work properly

The jquery and jquery-ujs files will be added to the asset pipeline and available for you to use. If they're not already in app/assets/javascripts/application.js by default, add these lines:

//= require jquery
//= require jquery_ujs

It appears you're missing the second line

//= require jquery_ujs

Following your reproduction steps in the GitHub issue, and then making sure that line is included fixes the issue for me, and $('form').trigger('submit.rails') in the javascript console starts submitting as

Processing by PostsController#create as JS

like image 92
Simple Lime Avatar answered Oct 11 '22 14:10

Simple Lime