🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

2190閲覧

rails NoMethodError (undefined method `map' for "1":String Did you mean? tap):

franseagal1

総合スコア5

Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/10 18:36

Rails 5.2.4.4
ruby 2.5.1p57
で開発しています。

したいこと:
stripeを使ってカード決済

エラー
#NoMethodError (undefined method `map' for "1":String Did you mean? tap):

show.html.erb

**show.html.erb** <div class="container"> <h3 class="text-center mb-30"> Stuff in your basket </h3> <% if @items.any? %> <% @items.each do |item| %> <ul class="row-col-1 border border-dark d-flex justify-content-between px-5 py-2 mb-3"> <li class="collection-item"> <%= item.name %> </li> <li class="collection-item "> <%= item.price%> <%= link_to "delete", item_delete_in_baskets_path(item), method: :post, data: { confirm: "You sure?" }, class:"ml-2"%> </li> </ul> <% end %> <div class="basket_total_amount float-right"> <%= "Total price:: CDN $ #{@total_price}" %> </div> <%= form_tag charge_path do %> <% @items.each do |p|%> **<%= hidden_field_tag :item_ids, p.id %>ト** <% end %> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="<%= ENV['STRIPE_API_KEY']%>" date-description="payment" data-amount="<%= @total_price %>" data-locale="auto" data-currency="cdn"> </script> <% end %> <% else %> <h3 class="text-center" id="basket_nop">...you have nothing on your basket</h3> <% end %> </div>

charges_controller

**charges_controller** class ChargesController < ApplicationController def create Stripe.api_key = ENV['STRIPE_SECRET_KEY'] token = params[:stripeToken] item_ids = params[:item_ids].map(&:to_i) items = current_user.basket.items.where(id: item_ids) total = items.sum[:price] Stripe::Charge.create({ amount: total, currency: 'cdn', description: 'Example charge', source: token }) redirect_to root_path, success: 'success your payment' end end

terminal

Parameters: {"utf8"=>"✓","item_ids"=>"1"} NoMethodError (undefined method `map' for "1":String Did you mean? tap):

どなたかアドバイス頂けたら嬉しいです。

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

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

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

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

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

winterboum

2021/01/11 00:37

エラーメッセージそれだけですか?前後に何か無いですか
franseagal1

2021/01/11 21:24

Parameters: {"utf8"=>"✓", "authenticity_token"=>"BIs(省略)", "item_ids"=>"1", "stripeToken"=>"tok(省略)", "stripeTokenType"=>"card", "stripeEmail"=>"my email"} パラメーターはこんな感じでした よろしくお願いします。
winterboum

2021/01/11 22:51

エラーメッセージそれだけですか?前後に何か無いですか
gouf

2021/01/13 05:29

「params[:item_ids]」の値は配列なのですか? エラーメッセージ通り文字列型なのですか? 実際の値を確認してみてください
guest

回答1

0

自己解決

解決しました。僕のStripeの設定が悪かったみたいです

コメント頂いた方ありがとうございます。

投稿2021/01/18 19:40

franseagal1

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問