Когда я отправляю форму, используя 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'
});
});
});