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

Рубин на рельсах

0 ответов

Другие вопросы по тегам