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

質問編集履歴

1

色々と変更

2021/04/11 20:09

投稿

widget11
widget11

スコア221

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,26 @@
1
1
  vue.jsでルーティングにvue-routerを使うとして
2
2
 
3
3
  ```
4
+ import Vue from "vue";
5
+ import VueRouter from "vue-router";
6
+ Vue.use(VueRouter);
7
+ import Page2 from '../pages/page2.vue'
8
+
9
+
4
10
  const routes =[
5
- {
11
+ {
6
- path: "/api/v1/users/:id",
12
+ path: '/page2',
7
- name: "User",
8
- component: users,
13
+ component: Page2
9
- }
14
+ }
10
15
  ];
16
+
17
+ const router = new VueRouter({
18
+ routes,
19
+ base: process.env.BASE_URL,
20
+ mode: 'history'
21
+ });
22
+
23
+ export default router;
11
24
  ```
12
25
  以上の様なルーティングになっているとします。
13
26
  `$router.push`等で`/api/v1/users/3"`に遷移しurl欄のurlも変化すると思います。
@@ -18,12 +31,49 @@
18
31
  Rails.application.routes.draw do
19
32
  namespace :api do
20
33
  namespace :v1 do
34
+ root to: 'home#index'
21
- resources :users, only: [:index, :show, :update]
35
+ resources :users, only: [:index,:show, :update]
22
36
  end
23
37
  end
38
+ get '/page2', to: 'api/v1/users#show'
24
39
  end
40
+
25
41
  ```
26
42
  この様に定義していたらこちらの`/api/v1/users/3`を見に行ってしまうという寸法です。
27
43
  ユーザがブラウザの更新ボタンを押すということは至ってよくあることだと思うのですが、一般的にこれはどう対策すれば良いのでしょうか?(例えばrailsですと/users/show.html.erbを作成して、更新してもユーザからは同じページを表示してる様に見せるなど)
28
44
  それとも更新を押してもusers.vueを呼び出す様ないい方法があるのでしょうか?
29
- SPA周りがあまり詳しくなく疑問に思っています。よろしくお願いします。
45
+ SPA周りがあまり詳しくなく疑問に思っています。よろしくお願いします。
46
+
47
+
48
+ ###追記
49
+ ```ここに言語を入力
50
+ js構成
51
+ javascript
52
+ -packs
53
+ |_pages2.js
54
+ |_application.js
55
+ -pages
56
+ |_pages2.vue
57
+ -router
58
+ |_router.js
59
+ ```
60
+
61
+ ```ここに言語を入力
62
+ //application.html.erb
63
+ <!DOCTYPE html>
64
+ <html>
65
+ <head>
66
+ <title>PerformaApps</title>
67
+ <meta name="viewport" content="width=device-width,initial-scale=1">
68
+ <%= csrf_meta_tags %>
69
+ <%= csp_meta_tag %>
70
+
71
+ <%= stylesheet_link_tag 'application', media: 'all' %>
72
+ <%= javascript_pack_tag 'application' %>
73
+ </head>
74
+
75
+ <body>
76
+ <%= yield %>
77
+ </body>
78
+ </html>
79
+ ```