質問編集履歴

7

編集

2019/11/06 10:39

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- ###68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
7
+ ####68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
8
8
 
9
9
 
10
10
 

6

編集

2019/11/06 10:39

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- #68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
7
+ ###68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
8
8
 
9
9
 
10
10
 

5

3

2019/11/06 10:35

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- \\68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです\\
7
+ #68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
8
8
 
9
9
 
10
10
 

4

編集

2019/11/06 10:34

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- ///68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです///
7
+ \\68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです\\
8
8
 
9
9
 
10
10
 

3

編集

2019/11/06 10:33

投稿

yakumo02
yakumo02

スコア103

test CHANGED
@@ -1 +1 @@
1
- if文 location pathname  id取得
1
+ /if文 location pathname  id取得
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- ///68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
7
+ ///68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです///
8
8
 
9
9
 
10
10
 

2

///

2019/11/06 10:32

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- 68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
7
+ ///68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
8
8
 
9
9
 
10
10
 

1

編集

2019/11/06 10:31

投稿

yakumo02
yakumo02

スコア103

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,153 @@
5
5
 
6
6
 
7
7
  68〜73行目でsetInterval(reloadMessages, 5000);をhttp://localhost:3000/groups/id/messagesのページだけで起動したいのですが、69行目で現在のグループidが入るようにしたいのですが、どう記述すればいいのかご教授お願いしたいです
8
+
9
+
10
+
11
+
12
+
13
+ $(document).on('turbolinks:load',function(){
14
+
15
+ function buildHTML(message){
16
+
17
+ var img = message.image ? `<img src= ${ message.image }>` : "";
18
+
19
+ var html = `<div class="message" data-id="${message.id}" >
20
+
21
+ <div class="message__upper-info">
22
+
23
+ <p class="message__upper-info__talker">
24
+
25
+ ${message.user_name}
26
+
27
+ </p>
28
+
29
+ <p class="message__upper-info__date">
30
+
31
+ ${message.created_at}
32
+
33
+ </p>
34
+
35
+ </div>
36
+
37
+ <p class="message__text">
38
+
39
+ <div>
40
+
41
+ ${message.content}
42
+
43
+ </div>
44
+
45
+ ${img}
46
+
47
+ </p>
48
+
49
+ </div>`
50
+
51
+ return html ;
52
+
53
+ }
54
+
55
+ $('#new_message').on('submit', function(e){
56
+
57
+ e.preventDefault();
58
+
59
+ var formData = new FormData(this);
60
+
61
+ $('#ajax').removeAttr('data-disable-with');
62
+
63
+ var url = $(this).attr('action')
64
+
65
+ $('#new_message')[0].reset();
66
+
67
+ $.ajax({
68
+
69
+ url: url,
70
+
71
+ type: "POST",
72
+
73
+ data: formData,
74
+
75
+ dataType: 'json',
76
+
77
+ processData: false,
78
+
79
+ contentType: false
80
+
81
+ })
82
+
83
+ .done(function(data){
84
+
85
+ var html = buildHTML(data);
86
+
87
+ $('.messages').append(html);
88
+
89
+ $(".messages").animate({scrollTop: $(".messages")[0].scrollHeight});
90
+
91
+ })
92
+
93
+ .fail(function(){
94
+
95
+ alert('エラーが発生しています');
96
+
97
+ })
98
+
99
+ });
100
+
101
+ var reloadMessages = function() {
102
+
103
+ last_message_id = $('.message').last().data("id");
104
+
105
+ $.ajax({
106
+
107
+ url: 'api/messages',
108
+
109
+ type: 'get',
110
+
111
+ dataType: 'json',
112
+
113
+ data: {id: last_message_id}
114
+
115
+ })
116
+
117
+ .done(function(messages) {
118
+
119
+ if(messages.length > 0){
120
+
121
+ var insertHTML = '';
122
+
123
+ messages.forEach(function (message) {
124
+
125
+ insertHTML = buildHTML(message);
126
+
127
+ $('.messages').append(insertHTML);
128
+
129
+ $(".messages").animate({scrollTop: $(".messages")[0].scrollHeight});
130
+
131
+ })
132
+
133
+ }
134
+
135
+ })
136
+
137
+ .fail(function() {
138
+
139
+ alert('error');
140
+
141
+ });
142
+
143
+ };
144
+
145
+
146
+
147
+ console.log(location.pathname)
148
+
149
+ if(location.pathname === "/groups/ 現在のgroup_id /messages"){
150
+
151
+ setInterval(reloadMessages, 5000);
152
+
153
+ console.log("setINterval")
154
+
155
+ }
156
+
157
+ });