Я создаю новое приложение в Ruby на Rails и использую следующую строку:
rails generate scaffold User name
Я меняю контроллер следующим образом:
class UsersController < ApplicationController
def index
@users = User.all
@user = User.new
end
# ...
Представление индекса ( app / views / users / index. html .erb) содержит:
<h1>Users</h1>
<ul id="users">
<%= render @users %>
</ul>
<br>
<%= form_with(model: @user) do |f| %>
<%= f.label :name %><br>
<%= f.text_field :name %>
<%= f.submit data: { "disable-with": "Saving..." } %>
<% end %>
Часть app / views / users / _user. html .erb содержит следующее:
<li><%= user.name %></li>
Я изменяю действие создания на контроллере следующим образом:
# app/controllers/users_controller.rb
# ......
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.js #THIS IS ADDED
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Я создал файл с именем "create. js .erb" в "app / views / users /" и добавил строка ниже: app / views / users / create. js .erb:
$("<%= escape_javascript(render @user) %>").appendTo("#users");
Когда я сохраняю нового пользователя, регистрация базы данных происходит, но пользователь не отображается на странице.
Ruby: ruby 2.6.5p114 (версия 2019-10-01 67812) [x86_64-linux]
Rails: Rails 6.0.2.2