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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Q&A

1回答

1663閲覧

param is missing or the value is empty: orderがなかなか解決しません

POSO

総合スコア0

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/01/26 11:54

編集2022/02/24 07:56

解決したいこと

param is missing or the value is empty: order
をクリアしたいです。
まずエラー画面のパラメーターは

{"authenticity_token"=>"[FILTERED]", "payment_id"=>"1", "cart_item"=>"#<CartItem::ActiveRecord_AssociationRelation:0x00007fe432e98068>", "user_id"=>"1", "total"=>"50000", "commit"=>"オーダー", "format"=>"1"}

となっており必要なデータは送信できているように見えます。
どこかに重複データがあるのか、そもそも送信できていないのかわかりません。
送信画面

<%= form_with(model: @order, url: order_create_path(current_cart), local: true) do |f| %> <h2><%= "総額:#{@total}円" %></h2> <h2><%= "支払い方法" %></h2> <% if user_signed_in? && current_user.corporpriv.id == 1 %> <%= f.collection_select(:payment_id, Payment.all, :id, :name, {}, {class:"select-box", id:"order_payment"}) %> <% else %> <%= f.collection_select(:payment_id, Payment.all, :id, :name, {disabled: [2,3]}, {class:"select-box", id:"order_payment"}) %> <% end %> <%= hidden_field_tag :cart_item, @cart_items %> <%= hidden_field_tag :user_id, @user.id %> <%= hidden_field_tag :total, @sougakutotal %> <%= f.submit "オーダー"%> <% end %>

コントローラー(オーダーのクリエイトから)

def create @cart_items = current_cart.cart_items.includes([:item]) @total = @cart_items.inject(0) { |sum, item| sum + item.sum_of_total } @order = current_user.orders.new(order_params) @user = User.find(current_user.id) if @order.save @cart_items = current_user.cart_items.all @cart_items.each do |cart_item| @order.user_id = current_user.id @order.item_id = cart_item.item.id @order.rentalday = cart_item.rentalday @order.backday = cart_item.backday current_user.cart_items.destroy_all end else redirect_to my_cart_path end end private def order_params params.require(:order).permit(:sougakutotal, :payment_id, :rentalday, :backday, :user_id, :item_id) end end

cart_itemの中にはrentalday, :backday,:item_idのデータが入っています

追記

class OrdersController < ApplicationController def order @cart_items = current_cart.cart_items.includes([:item]) @cart = Cart.find(current_cart.id) @user = User.find(current_user.id) @order = Order.new @total = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price } @warrantytotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_warranty } if @user.userrank.id == 1 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 15 } elsif @user.userrank.id == 2 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 10 } elsif @user.userrank.id == 3 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 5 } else @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price * 0 } end @sougakutotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_sougaku - (@logwaritotal).to_i } end def create @order = Order.new(order_params) @cart_items = current_cart.cart_items.includes([:item]) @sougakutotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_sougaku } @order = current_user.orders.new(order_params) @user = User.find(current_user.id) if @order.save @cart_items = current_user.cart_items.all @cart_items.each do |cart_item| @order.user_id = current_user.id @order.rentalday = cart_item.rentalday @order.backday = cart_item.backday current_user.cart_items.destroy_all end else redirect_to mycart_path end end private def order_params params.permit(:sougakutotal, :payment_id, :user_id, cart_items_attributes:[:rentalday, :backday]) end end

自分で試したこと

データ送信ができていないのかなど確認しました

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

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

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

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

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

guest

回答1

0

はて、、、
載せている view は 載せている パラメーターが得られたときのものですか?
view からみて、"payment_id"=>"1", がそうなるのがおかしい。"order"=>{"payment_id"=>"1"} になるとおもうのですが。
もしかして、@orderが初期化されていないかな。
controller全部載せてください。

投稿2022/01/28 21:35

winterboum

総合スコア23329

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

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

POSO

2022/02/04 07:55

回答遅れました "order"=>{"payment_id"=>"1"}, に一部コントローラーをいじったらなっています class OrdersController < ApplicationController def order @cart_items = current_cart.cart_items.includes([:item]) @cart = Cart.find(current_cart.id) @user = User.find(current_user.id) @order = Order.new @total = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price } @warrantytotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_warranty } if @user.userrank.id == 1 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 15 } elsif @user.userrank.id == 2 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 10 } elsif @user.userrank.id == 3 @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price / 5 } else @logwaritotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_price * 0 } end @sougakutotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_sougaku - (@logwaritotal).to_i } end def create @cart_items = current_cart.cart_items.includes([:item]) @sougakutotal = @cart_items.inject(0) { |sum, item| sum + item.sum_of_sougaku } @order = current_user.orders.new(order_params) @user = User.find(current_user.id) if @order.save @cart_items = current_user.cart_items.all @cart_items.each do |cart_item| @order.user_id = current_user.id @order.rentalday = cart_item.rentalday @order.backday = cart_item.backday current_user.cart_items.destroy_all end else redirect_to my_cart_path end end private def order_params params.permit(:sougakutotal, :payment_id, :user_id, cart_items_attributes:[:rentalday, :backday]) end end こちらです
winterboum

2022/02/04 12:03

読みにくいので codeは質問欄を偏執して <code> で入力してください
POSO

2022/02/24 07:54 編集

別の業務で返信遅れました、追記したので確認お願いしたいです。
winterboum

2022/02/24 08:12

「"order"=>{"payment_id"=>"1"}, に一部コントローラーをいじったらなっています」 とのことですが、その状態でなお「param is missing or the value is empty: order」ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問