У меня есть кнопка на моей домашней странице.При нажатии он отправляет POST-запрос на forms_controller
, чтобы создать новую форму.
Моя кнопка:
<%= link_to 'Add form', forms_path, id: 'add_form_button',
class: 'btn btn-primary',
method: :post, remote: true %>
Когда запрос завершен, на консоль записывается сообщение:
<script>
$('#add_form_button').on('ajax:complete', function(){
console.log('Request complete!');
});
</script>
Это действие:
def create
current_user.forms.create
end
Мои маршруты определены так:
Rails.application.routes.draw do
devise_for :users
root to: 'home#show'
resources :forms, except: [:index]
get 'user_forms' => 'partials#user_forms'
end
Работает, как и ожидалось.Каждый раз, когда я нажимаю кнопку, создается новая форма, и сообщение заносится в консоль.
Однако после создания формы я хочу перезагрузить div, чтобы увидеть вновь созданную формуперечислены вместе с другими:
$('#add_form_button').on('ajax:complete', function(){
console.log('Request complete!')
var user_forms = '#user_forms';
$(user_forms).load('user_forms',function(){
document.getElementById('add_form_button').scrollIntoView();
});
});
В случае .load('user_forms')...
, user_forms
- это маршрут к действию, которое я создал для возврата части:
class PartialsController < ApplicationController
def user_forms
render partial: 'home/user_forms'
end
end
при первом нажатии кнопки она работает как положено: создается новая форма, сообщение заносится в консоль, а div перезагружается с частичным, чтобы в нем отображалась вновь созданная форма.
Но этоне работает при последующих кликах.Новые формы создаются при каждом нажатии кнопки, но div не перезагружается и сообщение не записывается на консоль.Я также вижу следующую ошибку в терминале Rails:
No template found for FormsController#create, rendering head :no_content
Completed 204 No Content in 454ms (ActiveRecord: 2.6ms)
Я понимаю, что я не определил явный ответ в forms_controller#create
, но я не понимаю, почему он работает в первый раз, а не в последующие.,Что мешает ему работать второй раз?