Кнопка Отправить замораживается после отправки формы через Ajax - PullRequest
0 голосов
/ 31 марта 2019

Когда я отправляю форму, используя jQuery-Ajax в ROR, кнопка отправки блокируется.Я практикую «Интеграция Ajax и Rails: простое приложение для списка Todo» , предоставленное GitHub.

class TodosController < ApplicationController
    def create
        #binding.pry
        @todo = Todo.create(todo_params)

        respond_to do |format|
            format.html {redirect_to home_path}
            format.js {}
        end
    end

    private

    def todo_params
        params.require(:todo).permit(:description, :priority)
    end
end

index.html.erb

<h2>Create Todos</h2>
<%= render 'new' %>

<h2>Todos List</h2>
<ul>
    <%= render @todos %>
</ul>

_new.html.erb

<%= form_for Todo.new, html: {id: "form1"} do |f| %>
<p>
    <%= f.label :description %>
    <%= f.text_field :description %>
</p>
<p>
    <%= f.label :priority %>
    <%= f.text_field :priority %>
</p>
<p>
    <%= f.submit 'Submit' %>
</p>
<% end %>

_todo.html.erb

<li>
    <%= todo.description %><br>
    <strong>Priority:</strong><%= todo.priority %><br>
    <%= link_to 'done', todo_path(todo) , method: 'delete' %>
</li>

create.js.erb

$("ul").append("<%= j render partial: 'todo', locals: {todo: @todo} %>");

app / assets / javascript / todos.js

$(function(){
    $("#form1").submit(function(event){
    event.preventDefault();

    let method = $(this).attr('method');
    let action = $(this).attr('action');
    let description = $(this).find('#todo_description').val();
    let priority = $(this).find('#todo_priority').val();
    let data = $(this).serializeArray();

    $.ajax({
        method: method,
        url: action,
        data: data,

        dataType: 'script'
    });
  });
});

1 Ответ

0 голосов
/ 31 марта 2019

Кнопка зависла, потому что в настоящее время есть скрипт jquery, который отключает ее, чтобы предотвратить многократные отправки. Проверьте наличие каких-либо классов / атрибутов, добавленных к кнопке отправки при ее нажатии, а затем добавьте jquery в ваш create.js.erb, чтобы удалить их, а также очистите поля, если вы хотите отправить новый элемент todo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...