質問編集履歴

1

自分なりにですが情報を少し絞らせていただきました汗

2019/08/11 05:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -253,3 +253,119 @@
253
253
  end
254
254
 
255
255
  ```
256
+
257
+
258
+
259
+ # 追記
260
+
261
+ [1]こちらのコードを突っつかれますと、、
262
+
263
+ ```haml
264
+
265
+ .message{"data-message-id": "#{message.id}"}
266
+
267
+ ```
268
+
269
+ [2]同じgroup.idの場合のみここの処理がされ、、、
270
+
271
+ ```jquery
272
+
273
+ var reloadMessages = function() {
274
+
275
+ if (window.location.href.match(//groups/\d+/messages/)){
276
+
277
+ var last_message_id = $('.message:last').data("message-id")
278
+
279
+ $.ajax({
280
+
281
+ url: 'api/messages',
282
+
283
+ type: 'get',
284
+
285
+ dataType: 'json',
286
+
287
+ data: {id: last_message_id}
288
+
289
+ })
290
+
291
+ .done(function(messages) {
292
+
293
+ var insertHTML = '';
294
+
295
+ messages.forEach(function(message){
296
+
297
+ insertHTML = buildHTML(message);
298
+
299
+ $('.messages').append(insertHTML);
300
+
301
+ $('.messages').animate({ scrollTop: $('.messages')[0].scrollHeight});
302
+
303
+ })
304
+
305
+ })
306
+
307
+ .fail(function() {
308
+
309
+ alert('自動更新に失敗しました!');
310
+
311
+ });
312
+
313
+ }
314
+
315
+ };
316
+
317
+ setInterval(reloadMessages, 5000);
318
+
319
+ });
320
+
321
+ ```
322
+
323
+ [3]このapi/index.controller.rbが始まります。
324
+
325
+ ```Rails
326
+
327
+ class Api::MessagesController < ApplicationController
328
+
329
+ def index
330
+
331
+ group = Group.find(params[:group_id])
332
+
333
+ last_message_id = params[:id].to_i
334
+
335
+ @messages = group.messages.includes(:user).where("id > #{last_message_id}")
336
+
337
+ end
338
+
339
+ end
340
+
341
+ ```
342
+
343
+
344
+
345
+ [#]こちらがconfig/routes.rbになります。
346
+
347
+ ```
348
+
349
+ Rails.application.routes.draw do
350
+
351
+ devise_for :users
352
+
353
+ root 'groups#index'
354
+
355
+ resources :users, only: [:index,:edit, :update]
356
+
357
+ resources :groups, only: [:new, :create, :edit, :update] do
358
+
359
+ resources :messages, only: [:index, :create]
360
+
361
+ namespace :api do
362
+
363
+ resources :messages, only: :index, defaults: { format: 'json' }
364
+
365
+ end
366
+
367
+ end
368
+
369
+ end
370
+
371
+ ```