質問編集履歴

5

他のモデルも付け加えました。

2020/12/12 05:17

投稿

murohi-08
murohi-08

スコア12

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  どなたかご教授願えますでしょうか?よろしくお願いします。
4
4
 
5
- ![イメージ説明](da1d90dd346a64558c8336350550f25e.png)
5
+ ![イメージ説明](21468bbdb54ce863560b123ebe77274a.png)
6
6
 
7
7
  ```ここに言語を入力
8
8
 
@@ -194,273 +194,55 @@
194
194
 
195
195
 
196
196
 
197
- ```ここに言語を入力
198
-
199
- app/views/parchase_history.html.erb
200
-
201
-
202
-
203
- <%= render "shared/second-header"%>
204
-
205
-
206
-
207
- <div class='transaction-contents'>
208
-
209
- <div class='transaction-main'>
210
-
211
- <h1 class='transaction-title-text'>
212
-
213
- 購入内容の確認
214
-
215
- </h1>
216
-
217
- <%# 購入内容の表示 %>
218
-
219
- <div class='buy-item-info'>
220
-
221
- <%= image_tag @item.image, class: 'buy-item-img' %>
222
-
223
- <div class='buy-item-right-content'>
224
-
225
- <h2 class='buy-item-text'>
226
-
227
- <%= @item.name %>
228
-
229
- </h2>
230
-
231
- <div class='buy-item-price'>
232
-
233
- <p class='item-price-text'>¥<%= @item.price %></p>
234
-
235
-
236
-
237
- <p class='item-price-sub-text'><%= @item.postage.name %></p>
238
-
239
- </div>
240
-
241
- </div>
242
-
243
- </div>
244
-
245
- <%# /購入内容の表示 %>
246
-
247
-
248
-
249
- <%# 支払額の表示 %>
250
-
251
- <div class='item-payment'>
252
-
253
- <h1 class='item-payment-title'>
254
-
255
- 支払金額
256
-
257
- </h1>
258
-
259
- <p class='item-payment-price'>
260
-
261
- ¥<%= @item.price %>
262
-
263
- </p>
264
-
265
- </div>
266
-
267
- <%# /支払額の表示 %>
268
-
269
-
270
-
271
- <%= form_with model: @user_item, url: item_purchase_histories_path, id: 'charge-form', class: 'transaction-form-wrap',local: true do |f| %>
272
-
273
- <%# カード情報の入力 %>
274
-
275
- <div class='credit-card-form'>
276
-
277
- <h1 class='info-input-haedline'>
278
-
279
- クレジットカード情報入力
280
-
281
- </h1>
282
-
283
- <div class="form-group">
284
-
285
- <div class='form-text-wrap'>
286
-
287
- <label class="form-text">カード情報</label>
288
-
289
- <span class="indispensable">必須</span>
290
-
291
- </div>
292
-
293
- <%= f.text_field :number, class:"input-default", id:"card-number", placeholder:"カード番号(半角英数字)", maxlength:"16" %>
294
-
295
- <div class='available-card'>
296
-
297
- <%= image_tag 'card-visa.gif', class: 'card-logo'%>
298
-
299
- <%= image_tag 'card-mastercard.gif', class: 'card-logo'%>
300
-
301
- <%= image_tag 'card-jcb.gif', class: 'card-logo'%>
302
-
303
- <%= image_tag 'card-amex.gif', class: 'card-logo'%>
304
-
305
- </div>
306
-
307
- </div>
308
-
309
- <div class="form-group">
310
-
311
- <div class='form-text-wrap'>
312
-
313
- <label class="form-text">有効期限</label>
314
-
315
- <span class="indispensable">必須</span>
316
-
317
- </div>
318
-
319
- <div class='input-expiration-date-wrap'>
320
-
321
- <%= f.text_area :exp_month, class:"input-expiration-date", id:"card-exp-month", placeholder:"例)3" %>
322
-
323
- <p>月</p>
324
-
325
- <%= f.text_area :exp_year, class:"input-expiration-date", id:"card-exp-year", placeholder:"例)23" %>
326
-
327
- <p>年</p>
328
-
329
- </div>
330
-
331
- </div>
332
-
333
- <div class="form-group">
334
-
335
- <div class='form-text-wrap'>
336
-
337
- <label class="form-text">セキュリティコード</label>
338
-
339
- <span class="indispensable">必須</span>
340
-
341
- </div>
342
-
343
- <%= f.text_field :cvc,class:"input-default", id:"card-cvc", placeholder:"カード背面4桁もしくは3桁の番号", maxlength:"4" %>
344
-
345
- </div>
346
-
347
- </div>
348
-
349
- <%# /カード情報の入力 %>
350
-
351
-
352
-
353
- <%# 配送先の入力 %>
354
-
355
- <div class='shipping-address-form'>
356
-
357
- <h1 class='info-input-haedline'>
358
-
359
- 配送先入力
360
-
361
- </h1>
362
-
363
- <div class="form-group">
364
-
365
- <div class='form-text-wrap'>
366
-
367
- <label class="form-text">郵便番号</label>
368
-
369
- <span class="indispensable">必須</span>
370
-
371
- </div>
372
-
373
- <%= f.text_field :post_code, class:"input-default", id:"postal-code", placeholder:"例)123-4567", maxlength:"8" %>
374
-
375
- </div>
376
-
377
- <div class="form-group">
378
-
379
- <div class='form-text-wrap'>
380
-
381
- <label class="form-text">都道府県</label>
382
-
383
- <span class="indispensable">必須</span>
384
-
385
- </div>
386
-
387
- <%= f.collection_select(:prefecture_id, Prefecture.all, :id, :name, {}, {class:"select-box", id:"prefecture"}) %>
388
-
389
- </div>
390
-
391
- <div class="form-group">
392
-
393
- <div class='form-text-wrap'>
394
-
395
- <label class="form-text">市区町村</label>
396
-
397
- <span class="indispensable">必須</span>
398
-
399
- </div>
400
-
401
- <%= f.text_field :city, class:"input-default", id:"city", placeholder:"例)横浜市緑区"%>
402
-
403
- </div>
404
-
405
- <div class="form-group">
406
-
407
- <div class='form-text-wrap'>
408
-
409
- <label class="form-text">番地</label>
410
-
411
- <span class="indispensable">必須</span>
412
-
413
- </div>
414
-
415
- <%= f.text_field :house_number, class:"input-default", id:"addresses", placeholder:"例)青山1-1-1"%>
416
-
417
- </div>
418
-
419
- <div class="form-group">
420
-
421
- <div class='form-text-wrap'>
422
-
423
- <label class="form-text">建物名</label>
424
-
425
- <span class="form-any">任意</span>
426
-
427
- </div>
428
-
429
- <%= f.text_field :building_name, class:"input-default", id:"building", placeholder:"例)柳ビル103"%>
430
-
431
- </div>
432
-
433
- <div class="form-group">
434
-
435
- <div class='form-text-wrap'>
436
-
437
- <label class="form-text">電話番号</label>
438
-
439
- <span class="indispensable">必須</span>
440
-
441
- </div>
442
-
443
- <%= f.text_field :phone_number, class:"input-default", id:"phone-number", placeholder:"例)09012345678",maxlength:"11"%>
444
-
445
- </div>
446
-
447
- </div>
448
-
449
- <%# /配送先の入力 %>
450
-
451
- <div class='buy-btn'>
452
-
453
- <%= f.submit "購入" ,class:"buy-red-btn" %>
454
-
455
- </div>
456
-
457
- <% end %>
458
-
459
- </div>
460
-
461
- </div>
462
-
463
- <%= render "shared/second-footer"%>
197
+ 以下他のモデルです。
198
+
199
+ ```
200
+
201
+ app/models/sendingdestination.rb
202
+
203
+
204
+
205
+ class SendingDestination < ApplicationRecord
206
+
207
+ belongs_to :purchase_history, optional: true
208
+
209
+ with_options presence: true do
210
+
211
+ validates :post_code, format: {with: /\A[0-9]{3}-[0-9]{4}\z/, message: "is invalid. Include hyphen(-)"}
212
+
213
+ validates :prefecture_id, numericality: { other_than: 0, message: "Select" }
214
+
215
+ validates :city
216
+
217
+ validates :house_number
218
+
219
+ validates :phone_number, numericality: { only_integer: true, message: "Input only number" }
220
+
221
+ end
222
+
223
+ end
224
+
225
+ ```
226
+
227
+
228
+
229
+ ```ここに言語を入力
230
+
231
+ app/models/purchase_history.rb
232
+
233
+
234
+
235
+ class PurchaseHistory < ApplicationRecord
236
+
237
+ belongs_to :user, optional: true
238
+
239
+ belongs_to :item, optional: true
240
+
241
+ has_one :sending_destination
242
+
243
+
244
+
245
+ end
464
246
 
465
247
  ```
466
248
 
@@ -473,3 +255,5 @@
473
255
  デバッック(binding.pry)を利用して保存する情報がパラメーターに存在しているのかどうか見てみましたが、ちゃんと記録されているみたいでした。
474
256
 
475
257
  条件分技のifの処理がtrueにならず、うまく行われていないのが原因みたいです。
258
+
259
+ optinal:trueを購入履歴のモデルファイルにつけくわてみました。

4

userとitemのバリデーションを組んでみました。

2020/12/12 05:17

投稿

murohi-08
murohi-08

スコア12

test CHANGED
File without changes
test CHANGED
@@ -116,12 +116,18 @@
116
116
 
117
117
  validates :phone_number, numericality: { only_integer: true, message: "Input only number" }
118
118
 
119
+ validates :user
120
+
121
+ validates :item
122
+
119
123
  end
120
124
 
121
125
  validates :price, numericality: { greater_than_or_equal_to: 300, less_than_or_equal_to: 9999999, message: "Out of setting range"}
122
126
 
123
127
  validates :price, numericality: { only_integer: true, message: "Half-width number." }
124
128
 
129
+
130
+
125
131
 
126
132
 
127
133
  with_options numericality: { other_than: 0, message: "Select" } do

3

エラー文は出なくなりました。

2020/12/12 04:20

投稿

murohi-08
murohi-08

スコア12

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  どなたかご教授願えますでしょうか?よろしくお願いします。
4
4
 
5
-
5
+ ![イメージ説明](da1d90dd346a64558c8336350550f25e.png)
6
-
7
-
8
6
 
9
7
  ```ここに言語を入力
10
8
 

2

エラー文は出なくなりました。

2020/12/11 16:18

投稿

murohi-08
murohi-08

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,8 @@
1
- 購入機能の実装のところで、購入情報をDBに保存したいのですが、以下エラー文が出す。エラはパスワドが定義されいないと出ているので、各ファイルのpasswordカラムを確認しましたが、どこも異常はありせんでした@user_itemの中身にpasswordが入らなから、エラーでストプしていと思うですが、どたかご教授願えすでしょうか?よろしくお願ます。
1
+ 購入機能の実装のところで、購入情報をDBに保存したいのですが、のままリダイレクトせずトップペ遷移せず、そのペジに残ってしまUser must exist, Item must existtoiuとエラーセージがブラウザ上に表示されだけ状態にってしまいます。
2
-
3
-
4
-
2
+
5
- ![イメージ説明](7e001212b021e1a637ce2c6a01d2872f.png)
3
+ どなたかご教授願えますでしょうか?よろしくお願いします。
6
-
7
- ![イメージ説明](39e4bc819dba5ae2008ddf782a320c53.png)
4
+
5
+
8
6
 
9
7
 
10
8
 
@@ -58,7 +56,7 @@
58
56
 
59
57
  def purchase_history_params
60
58
 
61
- params.require(:user_item).permit(:nickname, :email, :encrypted_password, :first_name, :family_name, :first_name_kana, :family_name_kana, :birth_day, :image, :name, :introduction, :category_id, :item_condition_id, :postage_id, :prefecture_id, :prepare_id, :price, :post_code, :prefecture_id, :city, :house_number, :building_name, :phone_number)
59
+ params.permit(:nickname, :email, :encrypted_password, :first_name, :family_name, :first_name_kana, :family_name_kana, :birth_day, :image, :name, :introduction, :category_id, :item_condition_id, :postage_id, :prefecture_id, :prepare_id, :price, :post_code, :prefecture_id, :city, :house_number, :building_name, :phone_number)
62
60
 
63
61
  end
64
62
 
@@ -470,4 +468,4 @@
470
468
 
471
469
  デバッック(binding.pry)を利用して保存する情報がパラメーターに存在しているのかどうか見てみましたが、ちゃんと記録されているみたいでした。
472
470
 
473
- @user_item.valid?を抜いてみしたが、今度はNameErrorが出力されてします。
471
+ 条件分技のifの処理がtrueにならず、うく行われていないのが原因みたいです。

1

住所情報と購入情報のインスタンスを作りました。

2020/12/11 16:14

投稿

murohi-08
murohi-08

スコア12

test CHANGED
File without changes
test CHANGED
@@ -28,17 +28,23 @@
28
28
 
29
29
  def create
30
30
 
31
+ @item = Item.find(params[:item_id])
32
+
31
33
  @user_item = UserItem.new(purchase_history_params)
32
34
 
35
+ @user_item = SendingDestination.create
36
+
37
+ @user_item = PurchaseHistory.create
38
+
33
39
  if @user_item.valid?
34
40
 
35
41
  @user_item.save
36
42
 
37
- redirect_to action: :index
43
+ redirect_to root_path
38
44
 
39
45
  else
40
46
 
41
- render action: :new
47
+ render action: :index
42
48
 
43
49
  end
44
50