質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

311閲覧

決済システムで入力された情報を保存したいです。

20020822

総合スコア1

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/09/27 09:55

前提

ここに質問の内容を詳しく書いてください。
(例)
railsでフリマアプリのようなシステムを作っています。
決済システムで入力された情報を保存する機能を実装中に以下のエラーメッセージが発生しました。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • フリマアプリのフォームの情報を保存できるようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージ param is missing or the value is empty: purchase_address ### 該当のソースコード

ruby

1class PurchasesController < ApplicationController 2 before_action :purchase_params,only: [:create] 3 def index 4 @purchase = Purchase.all 5 @purchase = Purchase.new 6 end 7 8 9 def create 10 @purchase = Purchase.new(purchase_params) 11 if @purchase.valid? 12 @purchase.save 13 redirect_to root_path 14 else 15 render :index 16 end 17 end 18 19 private 20 21 def purchase_params 22 params.require(:purchase_address).permit(:post_code, :prefecture_id, :city, :home_num, :building_name, :tel).merge(user_id: current_user.id) 23 24 end 25 26end

ruby

1class PurchaseAddress 2 include ActiveModel::Model 3 attr_accessor :post_code, :prefecture_id, :city, :home_num, :building_name, :tel, :item_id, :user_id 4 5 validates :prefecture_id, numericality: { other_than: 1 } 6 7 with_options presence: true do 8 validates :item_id 9 validates :user_id 10 validates :post_code, format: {with: /\A[0-9]{3}-[0-9]{4}\z/ } 11 validates :city 12 validates :home_num 13 validates :tel, format: {with: /\A[0-9]{11}\z/ } 14 end 15 16 def save 17 purchase = Purchase.create(item_id: item_id, user_id: user_id) 18 19 Address.create(post_code: post_code, prefecture_id: prefecture_id, city: city, home_num: home_num, building_name: building_name, tel: tel, purchase_id: purchase.id) 20 21 end 22 23 24 25end

ruby

1 <%= form_with model: @purchase_address, url: purchases_path, id: 'charge-form', class: 'transaction-form-wrap',local: true do |f| %> 2 3 4 5 <%# カード情報の入力 %> 6 <div class='credit-card-form'> 7 <h1 class='info-input-haedline'> 8 クレジットカード情報入力 9 </h1> 10 <div class="form-group"> 11 <div class='form-text-wrap'> 12 <label class="form-text">カード情報</label> 13 <span class="indispensable">必須</span> 14 </div> 15 <%= f.text_field :hoge, class:"input-default", id:"card-number", placeholder:"カード番号(半角英数字)", maxlength:"16" %> 16 <div class='available-card'> 17 <%= image_tag 'card-visa.gif', class: 'card-logo'%> 18 <%= image_tag 'card-mastercard.gif', class: 'card-logo'%> 19 <%= image_tag 'card-jcb.gif', class: 'card-logo'%> 20 <%= image_tag 'card-amex.gif', class: 'card-logo'%> 21 </div> 22 </div> 23 <div class="form-group"> 24 <div class='form-text-wrap'> 25 <label class="form-text">有効期限</label> 26 <span class="indispensable">必須</span> 27 </div> 28 <div class='input-expiration-date-wrap'> 29 <%= f.text_area :hoge, class:"input-expiration-date", id:"card-exp-month", placeholder:"例)3" %> 30 <p>月</p> 31 <%= f.text_area :hoge, class:"input-expiration-date", id:"card-exp-year", placeholder:"例)23" %> 32 <p></p> 33 </div> 34 </div> 35 <div class="form-group"> 36 <div class='form-text-wrap'> 37 <label class="form-text">セキュリティコード</label> 38 <span class="indispensable">必須</span> 39 </div> 40 <%= f.text_field :hoge, class:"input-default", id:"card-cvc", placeholder:"カード背面4桁もしくは3桁の番号", maxlength:"4" %> 41 </div> 42 </div> 43 <%# /カード情報の入力 %> 44 45 <%# 配送先の入力 %> 46 <div class='shipping-address-form'> 47 <h1 class='info-input-haedline'> 48 配送先入力 49 </h1> 50 <div class="form-group"> 51 <div class='form-text-wrap'> 52 <label class="form-text">郵便番号</label> 53 <span class="indispensable">必須</span> 54 </div> 55 <%= f.text_field :post_code, class:"input-default", id:"postal-code", placeholder:"例)123-4567", maxlength:"8" %> 56 </div> 57 <div class="form-group"> 58 <div class='form-text-wrap'> 59 <label class="form-text">都道府県</label> 60 <span class="indispensable">必須</span> 61 </div> 62 <%= f.collection_select(:prefecture_id, Prefecture.all, :id, :name, {}, {class:"select-box", id:"prefecture"}) %> 63 </div> 64 <div class="form-group"> 65 <div class='form-text-wrap'> 66 <label class="form-text">市区町村</label> 67 <span class="indispensable">必須</span> 68 </div> 69 <%= f.text_field :city, class:"input-default", id:"city", placeholder:"例)横浜市緑区"%> 70 </div> 71 <div class="form-group"> 72 <div class='form-text-wrap'> 73 <label class="form-text">番地</label> 74 <span class="indispensable">必須</span> 75 </div> 76 <%= f.text_field :home_num, class:"input-default", id:"addresses", placeholder:"例)青山1-1-1"%> 77 </div> 78 <div class="form-group"> 79 <div class='form-text-wrap'> 80 <label class="form-text">建物名</label> 81 <span class="form-any">任意</span> 82 </div> 83 <%= f.text_field :building, class:"input-default", id:"building", placeholder:"例)柳ビル103"%> 84 </div> 85 <div class="form-group"> 86 <div class='form-text-wrap'> 87 <label class="form-text">電話番号</label> 88 <span class="indispensable">必須</span> 89 </div> 90 <%= f.text_field :tel, class:"input-default", id:"phone-number", placeholder:"例)09012345678",maxlength:"11"%> 91 </div> 92 </div> 93 <%# /配送先の入力 %> 94 <div class='buy-btn'> 95 <%= f.submit "購入" ,class:"buy-red-btn", id:"button" %> 96 </div> 97 <% end %> 98 </div> 99</div> 100<%= render "shared/second-footer"%>

試したこと

binding.pryを使用しparamsに入っている値を確認してみた。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問