回答編集履歴

1

追記

2021/04/10 04:27

投稿

neko_daisuki
neko_daisuki

スコア2090

test CHANGED
@@ -23,3 +23,71 @@
23
23
 
24
24
 
25
25
  [ルーティンググロブとワイルドカードセグメント](https://railsguides.jp/routing.html#%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B0%E3%83%AD%E3%83%96%E3%81%A8%E3%83%AF%E3%82%A4%E3%83%AB%E3%83%89%E3%82%AB%E3%83%BC%E3%83%89%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88)
26
+
27
+
28
+
29
+ ### 追記
30
+
31
+
32
+
33
+ すみません。よく見たら rails の route と vue の route が重なっていますね。
34
+
35
+
36
+
37
+ 別の URL にした方が良いと思いますが、どうしても同じ URL でやるなら
38
+
39
+ 普通にアクセスされた場合と、xhr(axios)から呼ばれた場合でレスポンスを振り分ける必要があります。
40
+
41
+
42
+
43
+ ```ruby
44
+
45
+ # これは削除
46
+
47
+ get "/app/*path", to: "vueapp#index"
48
+
49
+ ```
50
+
51
+
52
+
53
+ ```ruby
54
+
55
+ # show の前に respond_to_direct_access を実行
56
+
57
+ before_action :respond_to_direct_access, only: [:show]
58
+
59
+
60
+
61
+ def show
62
+
63
+ # ここには axios 用の処理を書く
64
+
65
+ ...
66
+
67
+ end
68
+
69
+
70
+
71
+ private
72
+
73
+
74
+
75
+ def respond_to_direct_access
76
+
77
+ # request.xhr は直接呼ばれた時は false
78
+
79
+ # axios から呼ばれたときは true になります
80
+
81
+ unless request.xhr # 直接呼ばれた時
82
+
83
+ # vue(とvue router)を含む javascript を返すビューを指定する
84
+
85
+ # この render が呼ばれると def show は呼ばれません
86
+
87
+ render "index"
88
+
89
+ end
90
+
91
+ end
92
+
93
+ ```