AJAX не работает в rails 6 с моим кодом, мой код create.js.erb не работает, мне приходится каждый раз перезагружать, чтобы показать свое сообщение в представлении индекса
messages_controller.rb ФАЙЛ:
class MessagesController < ApplicationController
def index
@messages = Message.all
@message = Message.new
end
def create
@message = Message.new(message_params)
@messages = Message.all
respond_to do |format|
if @message.save
format.html { redirect_to @message, notice: 'message was successfully created'}
format.js
format.json { render :show, status: :created, location: @message }
end
end
end
private
def message_params
params.require(:message).permit(:body)
end
end
index.html.erb ФАЙЛ:
<table>
<tbody>
<%= render partial: 'message', collection: @messages %>
</tbody>
</table>
<%= render 'form', message: @message %>
# Я удаляю код из CREATE.JS.ERB, но это не приводит к изменениям на сервере (порт: 3000)#create.js.erb ФАЙЛ:
$('table#bands tbody').append("<%= j render @message %>");
_message.html.erb ФАЙЛ:
<tr>
<td><%= message.body %></td>
</tr>
_form.html.erb ФАЙЛ:
<%= form_with(model: message) do |f| %>
<div class="col-sm-8">
<%= f.text_area :body, class: "form-control", placeholder: "Message Body" %>
</div>
<div class="btn-group">
<%= f.submit class: 'btn btn-primary' %>
</div>
<% end %>
routes.rb ФАЙЛ:
Rails.application.routes.draw do
resources :messages
root 'messages#index'
end
schema.rb ФАЙЛ:
ActiveRecord::Schema.define(version: 2020_07_23_045320) do
create_table "messages", force: :cascade do |t|
t.string "body"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
end
Рубин на рельсах