質問編集履歴
8
ルーティングのコード追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
|
36
36
|
|
37
|
-
以下にherokuのログと、コントローラーのコードを投げておきます。
|
37
|
+
以下にherokuのログと、コントローラー(webhook_controller.rb)、routes.rbのコードを投げておきます。
|
38
38
|
|
39
39
|
(コントローラーはこちらを参考にしております(https://qiita.com/YoheiMiyamoto/items/f6851cdb40891edf0e57))
|
40
40
|
|
@@ -132,6 +132,24 @@
|
|
132
132
|
|
133
133
|
```
|
134
134
|
|
135
|
+
#routes.rb
|
136
|
+
|
137
|
+
Rails.application.routes.draw do
|
138
|
+
|
139
|
+
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
post '/callback' => 'webhook#callback'
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
```
|
150
|
+
|
151
|
+
```
|
152
|
+
|
135
153
|
2017-10-10T12:52:52.629674+00:00 app[web.1]: [b6566130-8446-4c9b-8b6c-b6d653fb0c07] Started POST "/callback" for 203.104.156.75 at 2017-10-10 12:52:52 +0000
|
136
154
|
|
137
155
|
2017-10-10T12:52:52.634068+00:00 app[web.1]: [b6566130-8446-4c9b-8b6c-b6d653fb0c07] Processing by WebhookController#callback as HTML
|
7
試してみた方法を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
(追記)もしかしてcallback内に「render :nothing => true」が2つある
|
33
|
+
(追記)もしかしてcallback内に「render :nothing => true」が2つあるのが問題かと思いましたが、and returnを入れても変化なかったので違いそうです。
|
34
34
|
|
35
35
|
|
36
36
|
|
6
疑問点が減ったため質問形式を変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
【Rails】「 render :nothing => true 」 が効かない
|
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
rails
|
1
|
+
rails、herokuを用いてLINEBOTを作成しようとしております。
|
2
2
|
|
3
3
|
heroku run rails consoleをすると正常に動くのですが、実際にLINEで話し掛けると
|
4
4
|
|
5
|
-
どうも上手くいかないためherokuにてログを参照したところ、以下のエラーが出ます。
|
5
|
+
どうも上手くいかないためherokuにてログを参照したところ、以下のようなActionViewエラーが出ます。
|
6
6
|
|
7
7
|
```
|
8
8
|
|
@@ -18,13 +18,19 @@
|
|
18
18
|
|
19
19
|
```
|
20
20
|
|
21
|
-
|
21
|
+
|
22
|
-
|
23
|
-
|
22
|
+
|
24
|
-
|
25
|
-
|
23
|
+
callbackアクションに対して表示するviewがないよ!と言ってそうな気がしますが、webhookコントローラー内callbackアクションにて「render :nothing => true」で何も表示しないと指定しています。
|
24
|
+
|
26
|
-
|
25
|
+
その後の「application/callback」がミソのような気がしますが、applicationコントローラーにはcallbackアクションは無い・・・と、ここで詰まっております。
|
26
|
+
|
27
|
-
「render :nothing => true」
|
27
|
+
「render :nothing => true」が効かない条件がコントローラー内にあるのでしょうか?
|
28
|
+
|
29
|
+
また、「app/controllers/webhook_controller.rb:10:in `callback'」もヒントになるような気はするのですが、わからずじまいです。(webhookコントローラーの10行目にrender :nothing => trueを書いてる)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
(追記)もしかしてcallback内に「render :nothing => true」が2つある・・・?
|
28
34
|
|
29
35
|
|
30
36
|
|
@@ -182,14 +188,14 @@
|
|
182
188
|
|
183
189
|
|
184
190
|
|
185
|
-
(
|
191
|
+
(補足)herokuログに「Can't verify CSRF token authenticity.」とありますが、CSRFエラーの方は解決しております。
|
186
|
-
|
192
|
+
|
187
|
-
```
|
193
|
+
```
|
188
194
|
|
189
195
|
protect_from_forgery except: :callback
|
190
196
|
|
191
197
|
```
|
192
198
|
|
193
|
-
でcallbackをよけてあげると
|
199
|
+
でcallbackをよけてあげると通りました。
|
194
|
-
|
200
|
+
|
195
|
-
コードの方
|
201
|
+
コードの方は修正してあります。
|
5
現状説明追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
railsでLINEBOTを作成しようとしております。
|
2
|
+
|
3
|
+
heroku run rails consoleをすると正常に動くのですが、実際にLINEで話し掛けると
|
2
4
|
|
3
5
|
どうも上手くいかないためherokuにてログを参照したところ、以下のエラーが出ます。
|
4
6
|
|
4
考察追加、ログとコード修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
どうも上手くいかないためherokuにてログを参照したところ、以下のエラーが出ます。
|
4
4
|
|
5
5
|
```
|
6
|
-
|
7
|
-
Can't verify CSRF token authenticity.
|
8
6
|
|
9
7
|
Completed 500 Internal Server Error in 8ms
|
10
8
|
|
@@ -22,7 +20,7 @@
|
|
22
20
|
|
23
21
|
何をどこに追加してあげたらよいのか調べてもわからずじまいのため質問させていただきます。
|
24
22
|
|
25
|
-
(同日追記)色々調べましたが、表示するviewがないよ!と言ってそうです。
|
23
|
+
(同日追記)色々調べましたが、callbackアクションに対して表示するviewがないよ!と言ってそうな気がします。「application/callback」とあるのでviewでない、違うやつのような気もします。わからん。
|
26
24
|
|
27
25
|
「render :nothing => true」で何も表示しないことを言ってあげればよさそうですが、既にcallbackアクション内に書いてます。なんでだろう…
|
28
26
|
|
@@ -36,7 +34,7 @@
|
|
36
34
|
|
37
35
|
class WebhookController < ApplicationController
|
38
36
|
|
39
|
-
protect_from_forgery
|
37
|
+
protect_from_forgery except: :callback
|
40
38
|
|
41
39
|
|
42
40
|
|
@@ -191,3 +189,5 @@
|
|
191
189
|
```
|
192
190
|
|
193
191
|
でcallbackをよけてあげるとCSRFエラー消えました。
|
192
|
+
|
193
|
+
コードの方も修正してあります。
|
3
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,13 +18,13 @@
|
|
18
18
|
|
19
19
|
```
|
20
20
|
|
21
|
-
「ActionView~」テンプレートがないようなことを言っているのはわかるのですが、
|
21
|
+
「ActionView~」でテンプレートがないようなことを言っているのはわかるのですが、
|
22
22
|
|
23
23
|
何をどこに追加してあげたらよいのか調べてもわからずじまいのため質問させていただきます。
|
24
24
|
|
25
25
|
(同日追記)色々調べましたが、表示するviewがないよ!と言ってそうです。
|
26
26
|
|
27
|
-
「render :nothing => true」で何も表示しない
|
27
|
+
「render :nothing => true」で何も表示しないことを言ってあげればよさそうですが、既にcallbackアクション内に書いてます。なんでだろう…
|
28
28
|
|
29
29
|
|
30
30
|
|
2
考察の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,9 +20,11 @@
|
|
20
20
|
|
21
21
|
「ActionView~」テンプレートがないようなことを言っているのはわかるのですが、
|
22
22
|
|
23
|
-
|
23
|
+
何をどこに追加してあげたらよいのか調べてもわからずじまいのため質問させていただきます。
|
24
24
|
|
25
|
-
|
25
|
+
(同日追記)色々調べましたが、表示するviewがないよ!と言ってそうです。
|
26
|
+
|
27
|
+
「render :nothing => true」で何も表示しないよ!と言ってあげればよさそうですが、既にcallbackアクション内に書いてます。なんでだろう…
|
26
28
|
|
27
29
|
|
28
30
|
|
1
詰まっているところが1つ解決したため編集しました。(CSRFエラー解決)
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Heroku 「
|
1
|
+
Heroku 「ActionView::MissingTemplate」エラー
|
test
CHANGED
@@ -18,13 +18,9 @@
|
|
18
18
|
|
19
19
|
```
|
20
20
|
|
21
|
-
「ActionView~」テンプレートがないようなことを言っているの
|
21
|
+
「ActionView~」テンプレートがないようなことを言っているのはわかるのですが、
|
22
|
-
|
23
|
-
「Can't verify CSRF~」のCSRFエラーは外部からのAPIを受けるアクションを除外してあげたらよいのは分かるのですが、それぞれ、
|
24
22
|
|
25
23
|
・何をどこに追加してあげたらよいのか(viewが無い・・・?)、
|
26
|
-
|
27
|
-
・どれを除外したらいいのか(callbackアクション?)
|
28
24
|
|
29
25
|
が調べてもわからずじまいのため質問させていただきます。
|
30
26
|
|
@@ -175,3 +171,21 @@
|
|
175
171
|
2017-10-10T12:53:32.721685+00:00 app[web.1]: [f8695c6b-0fc7-44a7-966a-65b353dcf3d2] app/controllers/webhook_controller.rb:10:in `callback'
|
176
172
|
|
177
173
|
```
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
---
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
(同日)CSRFエラー解決しました。
|
184
|
+
|
185
|
+
```ruby
|
186
|
+
|
187
|
+
protect_from_forgery except: :callback
|
188
|
+
|
189
|
+
```
|
190
|
+
|
191
|
+
でcallbackをよけてあげるとCSRFエラー消えました。
|