首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails NoMethodError (用于“1”的未定义方法‘`map’:String,您的意思是?(技术咨询方案):

rails NoMethodError (用于“1”的未定义方法‘`map’:String,您的意思是?(技术咨询方案):
EN

Stack Overflow用户
提问于 2021-01-11 23:08:04
回答 1查看 560关注 0票数 1

Rails 5.2.4.4卢比2.5.1p57

我想做的:通过Stripe构建签出服务

错误: rails NoMethodError (用于“1”的未定义方法‘`map’:String,您的意思是?(技术咨询方案):

show.html.erb

代码语言:javascript
复制
<% 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::  CAD $ #{@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="cad">
      </script>
    <% end %>
<% else %>
  <h3 class="text-center" id="basket_nop">...you have nothing on your basket</h3>
<% end %>
</div

charges_controller

代码语言:javascript
复制
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

我的终端

代码语言:javascript
复制
Parameters: {"utf8"=>"✓", "authenticity_token"=>"BIs...", "item_ids"=>"1", "stripeToken"=>"tok...", "stripeTokenType"=>"card", "stripeEmail"=>"my email"}NoMethodError (undefined method `map' for "1":String
Did you mean?  tap):

你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-12 06:46:40

映射只处理数组数据,来自params:item_ids的内容是字符串,所以只需使用params:item_ids

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65675813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档