Я настраиваю render_asyn c для использования в качестве временного исправления из-за того, что я не могу заставить ActionCable работать без таинственного времени отклика, разрушающего сервер, и мне нужна небольшая помощь в понимании документы. То, как я это настроил (что, я считаю, соответствует их предложениям), отображает всю страницу внутри div вместо рендеринга новых сообщений по мере их отправки. Как мне сделать так, чтобы он работал так, как я намереваюсь?
rout.rb
resources :conversations, only: [:index, :create], path: "chats" do
resources :messages, only: [:index, :create]
end
messages_controller.rb
def index
@conversations = Conversation.participating(current_user).order('updated_at DESC')
@messages = @conversation.messages.all
@message = @conversation.messages.new
if !@conversation.unread_message_count(current_user).zero?
@conversation.mark_as_read(current_user)
end
# render partial: "messages/message"
# (the docs suggest rendering the partial here, but i want it rendered in a div, not the entire window)
end
сообщений / индекса. html .erb
<%= render_async conversation_messages_path %>
_message. html .erb
<% @messages.each do |message| %>
<% cache message do %>
<div class="message">
<div><strong><%= message.user.username %>:</strong> <%= message.body %></div>
<div class="date"><%= local_time(message.created_at) %></div>
</div>
<% end %>
<% end %>