[RUBY] Fonction de commentaire implémentée

Essayez d'implémenter la fonction de commentaire

Créer une application

Terminal


% cd projects
% rails _6.0.0_ new mini_talk_app -d mysql
% cd mini_talk_app
% rails db:create

Créer un contrôleur et un modèle

Terminal


% rails g controller messages new
% rails g model message text:text
% rails db:migrate

Configurer le routage

app/config/routes.rb


Rails.application.routes.draw do
  root 'messages#new'
  resources :messages, only: [:create]
end

Modifier messages_controller.rb

java:new.html.Modifier erb


<h3>mini_talk_app</h3>
<%= form_with model: @message do |f| %>
  <%= f.text_field :text %>
  <%= f.submit 'Envoyer' %>
<% end %>
<div id='messages'>
  <% @messages.reverse_each do |message| %>
    <p><%= message.text %></p>
  <% end %>
</div>

Créer une chaîne

Terminal


% rails g channel message

Ajout de stream_from

app/channel/message_channel.rb


class MessageChannel < ApplicationCable::Channel
  def subscribed
    stream_from "message_channel"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

Modifier messages_controller.rb

app/controller/messages_controller.rbclass MessagesController < ApplicationController


  def new
    @messages = Message.all
    @message = Message.new
  end

  def create
    @message = Message.new(text: params[:message][:text])
    if @message.save
      ActionCable.server.broadcast 'message_channel', content: @message
    end
  end
end

Modifier message_channel.js

app/javascript/channels/message_channel.js


import consumer from "./consumer"

consumer.subscriptions.create("MessageChannel", {
  connected() {
    // Called when the subscription is ready for use on the server
  },

  disconnected() {
    // Called when the subscription has been terminated by the server
  },

  received(data) {
    const html = `<p>${data.content.text}</p>`;
    const messages = document.getElementById('messages');
    const newMessage = document.getElementById('message_text');
    messages.insertAdjacentHTML('afterbegin', html);
    newMessage.value='';
  }
});

c'est tout!

Recommended Posts

Fonction de commentaire implémentée
Implémentation de la fonction de commentaire (Ajax)
Fonction de commentaire de création d'application asynchrone
Mise en œuvre de la fonction d'authentification avec Spring Security ②
Implémentez la fonction d'authentification avec Spring Security ③
À propos de la gestion des erreurs de la fonction de commentaire
Mise en œuvre de la fonction d'authentification avec Spring Security ①
[Rails] Fonction de commentaire (enregistrement / affichage / suppression)
[Ruby on Rails] Implémentation de la fonction de commentaire
[Rails] Commentaire mémo de procédure d'implémentation
Implémentation de "Black Jack".
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Fonction de connexion
Fonctions JavaScript
Fonction SpringMVC-Interceptor
Fonction de publication implémentée par communication asynchrone dans Rails