質問編集履歴
2
見出しの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -129,10 +129,11 @@
|
|
129
129
|
end
|
130
130
|
```
|
131
131
|
|
132
|
+
### 実現したいこと
|
132
133
|
ユーザーが新たな記事を投稿した際、
|
133
134
|
1. postsテーブルに「title」と「body」を保存
|
134
135
|
2. post_category_mapsテーブルに「post_id」と「category_id」の1セット(関連付け)を保存
|
135
|
-
したいのですが、現状、投稿してもエラーとなってしまいます。
|
136
|
+
したいのですが、現状、投稿しても「title」と「body」は保存されるものの、「post_id」と「category_id」の関連付けは保存されずエラーとなってしまいます。
|
136
137
|
|
137
138
|
### エラー内容
|
138
139
|
```ターミナル
|
1
viewファイルの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -142,3 +142,66 @@
|
|
142
142
|
|
143
143
|
postsコントローラーファイルをどのように修正すれば「投稿」と「カテゴリー」の関連付けがpost_category_mapsテーブルに保存できるようになるでしょうか?
|
144
144
|
お教えいただければ幸いです。
|
145
|
+
|
146
|
+
# 追記
|
147
|
+
newのviewファイルの内容は以下になります。
|
148
|
+
```vue
|
149
|
+
<template>
|
150
|
+
<v-form
|
151
|
+
ref="form"
|
152
|
+
v-model="isValid"
|
153
|
+
@submit.prevent="post"
|
154
|
+
>
|
155
|
+
<form-input-post-title
|
156
|
+
:title.sync="params.post.title"
|
157
|
+
/>
|
158
|
+
<form-input-post-body
|
159
|
+
:body.sync="params.post.body"
|
160
|
+
/>
|
161
|
+
<form-input-post-category
|
162
|
+
:category_id.sync="params.post.category_id"
|
163
|
+
/>
|
164
|
+
<v-btn
|
165
|
+
type="submit"
|
166
|
+
:disabled="!isValid || loading"
|
167
|
+
:loading="loading"
|
168
|
+
value="送信"
|
169
|
+
>
|
170
|
+
送信
|
171
|
+
</v-btn>
|
172
|
+
</v-form>
|
173
|
+
</template>
|
174
|
+
|
175
|
+
<script>
|
176
|
+
export default {
|
177
|
+
name: 'PagesNew',
|
178
|
+
layout: 'new',
|
179
|
+
data ({ $store }) {
|
180
|
+
return {
|
181
|
+
isValid: false,
|
182
|
+
loading: false,
|
183
|
+
params: {
|
184
|
+
post: {
|
185
|
+
user_id: this.$store.state.user.current.id,
|
186
|
+
title: '',
|
187
|
+
body: '',
|
188
|
+
category_id: 0
|
189
|
+
}
|
190
|
+
}
|
191
|
+
}
|
192
|
+
},
|
193
|
+
methods: {
|
194
|
+
async post () {
|
195
|
+
this.loading = true
|
196
|
+
setTimeout(() => {
|
197
|
+
this.loading = false
|
198
|
+
}, 1500)
|
199
|
+
if (this.isValid) {
|
200
|
+
await this.$axios.$post('/api/v1/posts', this.params)
|
201
|
+
}
|
202
|
+
this.loading = false
|
203
|
+
}
|
204
|
+
}
|
205
|
+
}
|
206
|
+
</script>
|
207
|
+
```
|