teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

誤字

2019/10/14 14:23

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -27,7 +27,7 @@
27
27
  },
28
28
  > ```
29
29
 
30
- もちろん`$('#messages').data('room_id')`をそのまま`room_channel.js`に渡してもいいです。
30
+ もちろん`$('#messages').data('room_id')`をそのまま`room_channel.rb`に渡してもいいです。
31
31
 
32
32
  ```js
33
33
  speak: function(message) {

4

追記

2019/10/14 14:23

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  def speak(data)
7
7
  Message.create! content: data['message'], user_id: current_user.id, room_id: params['room']
8
8
  end
9
- ```
9
+ > ```
10
10
 
11
11
  記事で言うと[ここ](https://qiita.com/eRy-sk/items/4c4e983e34a44c5ace27#roomid%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E7%9B%A3%E8%A6%96%E3%81%99%E3%82%8B%E5%A0%B4%E6%89%80%E3%82%92%E5%88%86%E3%81%91%E3%82%8B)の`app/channels/room_channel.rb`に当たる箇所です。
12
12
 
@@ -25,4 +25,21 @@
25
25
  received: function(data) {
26
26
  return $('#messages').append(data['message']);
27
27
  },
28
- > ```
28
+ > ```
29
+
30
+ もちろん`$('#messages').data('room_id')`をそのまま`room_channel.js`に渡してもいいです。
31
+
32
+ ```js
33
+ speak: function(message) {
34
+ return this.perform('speak', {
35
+ message: message, room_id: $('#messages').data('room_id')
36
+ });
37
+ }
38
+ ```
39
+
40
+ ```rb
41
+ def speak(data)
42
+ Message.create! content: data['message'], user_id: current_user.id, room_id: data['room_id']
43
+ end
44
+ ```
45
+ 動作確認してないですが、こんな感じですかね。

3

修正

2019/10/14 14:21

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -20,7 +20,9 @@
20
20
 
21
21
  > ```js
22
22
  // app/javascript/channels/room_channel.js
23
+ const chatChannel = consumer.subscriptions.create({ channel: 'RoomChannel', room: $('#messages').data('room_id') }, {
24
+ // ...
23
- received: function(data) {
25
+ received: function(data) {
24
- return $('#messages').append(data['message']);
26
+ return $('#messages').append(data['message']);
25
- },
27
+ },
26
28
  > ```

2

追記

2019/10/14 13:56

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -8,4 +8,19 @@
8
8
  end
9
9
  ```
10
10
 
11
- 記事で言うと[ここ](https://qiita.com/eRy-sk/items/4c4e983e34a44c5ace27#roomid%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E7%9B%A3%E8%A6%96%E3%81%99%E3%82%8B%E5%A0%B4%E6%89%80%E3%82%92%E5%88%86%E3%81%91%E3%82%8B)の`app/channels/room_channel.rb`に当たる箇所です。
11
+ 記事で言うと[ここ](https://qiita.com/eRy-sk/items/4c4e983e34a44c5ace27#roomid%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8A%E7%9B%A3%E8%A6%96%E3%81%99%E3%82%8B%E5%A0%B4%E6%89%80%E3%82%92%E5%88%86%E3%81%91%E3%82%8B)の`app/channels/room_channel.rb`に当たる箇所です。
12
+
13
+ ## 追記
14
+ > ```erb
15
+ <div id='messages' data-room_id="<%= @room.id %>">
16
+ > ```
17
+
18
+ の`room_id`はメッセージ登録後にブロードキャストしたHTMLをレンダリングする際、
19
+ どの`room_id`に表示させるかの判断に利用します。コードで言えば以下の部分です。
20
+
21
+ > ```js
22
+ // app/javascript/channels/room_channel.js
23
+ received: function(data) {
24
+ return $('#messages').append(data['message']);
25
+ },
26
+ > ```

1

修正

2019/10/14 13:53

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  Qiitaにコメントしていただきありがとうございます。
2
2
  ルームIDについてですが、データの登録時点では`params['room']`から取得しています。
3
- データを作成している箇所はJobの以下にあたりますので参考にしてください。
3
+ データを作成している箇所は以下にあたりますので参考にしてください。
4
4
  > ```rb
5
5
  # app/channels/room_channel.rb
6
6
  def speak(data)