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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

2000閲覧

'0' is not a valid paymentエラー

Mason

総合スコア14

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/19 11:32

編集2021/02/19 12:14

前提・実現したいこと

現在railsにてECサイトを作成中です。
ラジオボタンにてクレカ払い(0)、銀行振り込み(1)か選択できるようにして次ページにて選択した方を表示したいです。

ここに質問の内容を詳しく書いてください。
「0」が有効ではないので変換する記述方法がわからずにいます。
ご教授頂けると幸いです。

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

ArgumentError in Public::OrdersController#create '0' is not a valid payment # binding.pry # params[:payment][:address] = params[:payment][:address].to_i @order = Order.new(order_params) #↑ここで引っかかる @order.save end ```~~打ち消し線~~ ### 該当のソースコード

orders_controller.rb

class Public::OrdersController < ApplicationController

def index
@customer = Customer.find(params[:id])
@customers = @customer.product
# @orders = Order.all
end

def new
@customer = current_customer
# @i = current_customer.cart_items
@all = Product.all
@address = Address.all
end

def show
end

def create
@customer = current_customer
# binding.pry
# params[:payment][:address] = params[:payment][:address].to_i
@order = Order.new(order_params)
@order.save
end

def confirm
@cart_items = current_customer.cart_items
@total = 0
@order = Order.new(order_params)
# @order = Order.find(params[:id])

end

def complete
end

private

def order_params

params.permit(:payment, :address)

end

end

orders/confirm.html.erb ```<h3>注文情報確認</h3> <br> <br> <div class="col-xs-8"> <table class="table table-hover"> <thead> <tr> <th>商品名</th> <th>単価(税込)</th> <th>数量</th> <th>小計</th> </tr> </thead> <tbody> </table> <% @total = 0 %> <% @cart_items.each do |cart_item| %> <td><%= attachment_image_tag @priduct, :image_id, size: "90x90", fallback: "cake.jpg" %> <%= cart_item.product.name %> <%= cart_item.product.price %> <% @total += cart_item.product.price %> <% end %> <th>送料</th> <th>800</th> </tr> <tr> <th>商品合計</th> <td><%= @total %></td> </tr> <tr> <th>請求額</th> <td><%= @total + 800 %></td> </tr> <br> <br> <br> <h4>支払い方法</h4> <%= @order.payment %> <h4>お届け先</h4> <%= @order.post_address %><%= @order.street_address %><br> <%= @order.address %><br> <div class="text-center"> <%= link_to "注文を確定する", orders_complete_path, class: 'btn btn-success' %> </div>
orders/new.html.erb <br> <h3 style="margin-left: 200px;">注文情報入力</h3><br> <%= form_with(model: @orders, local: true, url: orders_path, method: :post) do |f| %> <label style="margin-left: 130px;"><h4>支払い方法</h4></label><br> <label style="margin-left: 190px;"><%= f.radio_button :payment, 0, checked: "checked"%> クレジットカード</label><br> <label style="margin-left: 190px;"><%= f.radio_button :payment, 1 %> 銀行振込</label><br> <br> <label style="margin-left: 130px;"><h4>お届け先</h4></label><br> <label style="margin-left: 190px;"><%= f.radio_button :address,1,checked: "checked" %> ご自身の住所</label> <div><label style="margin-left: 220px;"> <%= current_customer.post_number %> <%= current_customer.street_address %> <br> <%= current_customer.last_name %><%= current_customer.first_name %></label> <div> <label style="margin-left:190px;"><%= f.radio_button :address ,2%> 登録済住所から選択</label><br> <div><label style="margin-left: 220px;"> <%= f.collection_select(:address, current_customer.addresses.all, :post_address, :street_address)%> <br> </div> <label style="margin-left: 190px;"> <%= f.radio_button :address,3 %> 新しいお届け先</label> <div style="display: flex; margin-left:15% ;"> <div style="display: flex flex-direction: column; flex-wrap: wrap; width: 180px;"> <%= f.label :"郵便番号(ハイフンなし)"%><br><br> <%= f.label :"住 所"%><br><br> <%= f.label :"宛 名"%><br><br> </div> <div style=" margin-left:20px; "> <%= f.text_field :postal_code %><br><br> <%= f.text_field :shipping_address ,size: "60" %><br><br> <%= f.text_field :name %><br><br> <%= f.submit "確認画面へ進む", class: 'btn btn-primary' %> <% end %>

試したこと

to_iが必要かと思われるのでコントローラーで記述してみました。

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

Rails 5.2.4.5
ruby 2.6.3

orders/new.html.erbからorders/confirrm.html.erbへ飛び、選択したほうを表示したいです。
ここにより詳細な情報を記載してください。

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

該当のソースコード 

'0' is not a valid paymentエラー

### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/02/19 11:51

投稿前に投稿画面右側のプレビュー確認されたほうが良いかと思います。 コード部分がだいぶ、はみ出てます。 マークダウンのcodeは仕組み覚えておいた方が良いです。 https://teratail.com/questions/238564
Mason

2021/02/19 11:53

ご指摘ありがとうございます! 早速やってみます。
guest

回答1

0

ベストアンサー

action new で @ordersを定義していないのにform_with(model: @orders, と @orders を使っているのがまず間違い。
なお、一つしか作らないのだから単数形にしてください。読む人が勘違いします。

def new @order = Oder.new end

また order_params が おかしい。
params.require(:order).permit(:payment, :address)

投稿2021/02/19 13:01

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問