использование render_asyn c для рендеринга новых сообщений в рельсах - PullRequest
0 голосов
/ 28 апреля 2020

Я настраиваю 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...