質問編集履歴

2

っっっっっっっf

2021/02/13 00:47

投稿

Meitoku
Meitoku

スコア44

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,15 @@
1
+ ###途中で投げ出すのはやめましょう
2
+
3
+ 回答者も分からないものは分からないと言う素直さも必要です
4
+
5
+
6
+
7
+
8
+
9
+ ###解決したいこと
10
+
11
+
12
+
1
13
  Vue.jsでrouter-linkでerbファイルで実装されているページに遷移しようと思っています
2
14
 
3
15
  URLは変わるのですが、画面がリロードしないと変わりません

1

変更

2021/02/13 00:47

投稿

Meitoku
Meitoku

スコア44

test CHANGED
File without changes
test CHANGED
@@ -8,9 +8,175 @@
8
8
 
9
9
 
10
10
 
11
+ ###ルーティング
12
+
13
+ Tweetsコントローラーを、apiと通常のコントローラーで分けています
14
+
15
+
16
+
17
+ ```
18
+
19
+ resources :tweets do
20
+
21
+ collection do
22
+
23
+ get :search
24
+
25
+ end
26
+
27
+ resources :comments,only:[:create,:destroy]
28
+
29
+ resources :likes,only:[:create,:destroy]
30
+
31
+ end
32
+
33
+
34
+
35
+ namespace :api,{format: 'json'} do
36
+
37
+ namespace :v1 do
38
+
39
+ resources :tweets,only:[:index]
40
+
41
+ end
42
+
43
+ end
44
+
45
+ ```
46
+
47
+
48
+
49
+ ###コントローラー
50
+
51
+ apiを使用してindexアクションでTweetモデルのレコードを取得しています
52
+
53
+
54
+
55
+ ```
56
+
57
+ class Api::V1::TweetsController < ApiController
58
+
59
+
60
+
61
+ rescue_from ActiveRecord::RecordNotFound do |exception|
62
+
63
+ render json: { error: '404 not found' }, status: 404
64
+
65
+ end
66
+
67
+
68
+
69
+ def index
70
+
71
+ @tweets = Tweet.includes(:user).page(params[:page]).per(5).order("created_at DESC")
72
+
73
+ render 'index', formats: 'json', handlers: 'jbuilder'
74
+
75
+ end
76
+
77
+ end
78
+
79
+ ```
80
+
81
+
82
+
83
+ ###Jbuilder
84
+
85
+ Jbuilderでデータの整形を行います
86
+
87
+ ```
88
+
89
+ json.array! @tweets do |tweet|
90
+
91
+ json.nickname tweet.user.nickname
92
+
93
+ json.text tweet.text
94
+
95
+ json.school_a tweet.school_a.name
96
+
97
+ json.school_b tweet.school_b.name
98
+
99
+ json.title tweet.title_info
100
+
101
+ json.id tweet.id
102
+
103
+ json.time tweet.created_at.strftime("%Y年%m月%d日 %H時%M分")
104
+
105
+ end
106
+
107
+ ```
108
+
109
+
110
+
111
+ ###index.html.erb
112
+
113
+ views > tweets > index.html.erb
114
+
115
+
116
+
117
+ indexページでjsファイルを読み込み
118
+
119
+
120
+
121
+ ```
122
+
123
+ <%= javascript_pack_tag 'tweet_vue' %>
124
+
125
+ ```
126
+
127
+
128
+
129
+ ###tweet_vue.js
130
+
131
+ app.vueをインポートします
132
+
133
+
134
+
135
+ ```
136
+
137
+ import Vue from 'vue'
138
+
139
+ import App from '../app.vue'
140
+
141
+
142
+
143
+ document.addEventListener('DOMContentLoaded', () => {
144
+
145
+ const el = document.body.appendChild(document.createElement('tweet'))
146
+
147
+ const app = new Vue({
148
+
149
+ el,
150
+
151
+ render: h => h(App)
152
+
153
+ })
154
+
155
+ })
156
+
157
+
158
+
159
+ ```
160
+
161
+
162
+
163
+ TweetIndexPage.vueはindex.html.erbで表示させています
164
+
165
+ 遷移したいページはツイートの詳細ページです
166
+
167
+ tweets > show.html.erb(/tweets/id)
168
+
169
+
170
+
171
+
172
+
173
+ ######----------------------------ここまで追記------------------------------------------
174
+
175
+
176
+
11
177
  ###app.vue
12
178
 
13
- ルート設定
179
+ ルート設定します
14
180
 
15
181
 
16
182