メッセージが一度しか送れない!!
sendボタンを押すとメッセージは非同期で表示され、データベースにも残るが
リロードしないともう一度メッセージは送れず、
リロードするとメッセージデータが一つ、古いものから消える
actioncable使ってます
messages controller
class MessagesController < ApplicationController
def new
@book = Book.find(params[:book_id])
@messages = Message.all
@message = Message.new
end
def create
@book = Book.find(params[:book_id])
@message = @book.build_message(message_params)
if @message.save!
ActionCable.server.broadcast 'message_channel', js_content: @message
# redirect_to "book_messages_path "
end
end
private
def message_params
params.require(:message).permit(:text).merge(user_id: current_user.id,book_id: params[:book_id])
end
end
メッセージのやり取りを行う場所 message new.html.erb
h1 class = "top-messsage"><%="#{@book.name}"%></h1>
<% @messages.reverse_each do |message| %>
<div class = "message-head">
<div id='messages'>
<i><%= message.text %></i>
<%= message.user.nickname%>
</div>
<% end %>
</div>
<div class="box-new">
<%= form_with(model: [@book, @message],url: "/books/#{@book.id}/messages", local: true) do |f| %>
<%= f.text_field :text, id: "message_text" %>
<%= f.submit '送信' %>
<% end %>
<div class="message-new">
<i class="container2"> <%= link_to 'home', "/", class: "btn-open3" %></i>
</div>
</div>
url:の指定先を変えてみたり
したが原因がわからない
0