Ruby: ArgumentError (错误的参数数(给定 1,预期为 0)) [已关闭]

Ruby: ArgumentError (wrong number of arguments (given 1, expected 0)) [closed]

提问人:John Gerard 提问时间:9/28/2023 最后编辑:John Gerard 更新时间:9/28/2023 访问量:69

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

上个月关闭。

我显然从根本上不理解如何在 Rails 中传递参数和调用方法。

我正在尝试使用虚拟信息对 stripe 进行测试调用,当我尝试从控制台运行此命令时,我收到主题错误:

Stripe::CustomerApi.new(30).create_stripe_customer

该方法所在的类如下所示:

require 'stripe'
module Stripe
    class CustomerApi

        def initialize(id)
          @user = User.find(id)
          @company_profile = @user.company_profile
          Stripe.api_key = 'my test key info'
        end


        def create_stripe_customer
          request = Stripe::Customer.create({
              email: '[email protected]',
              name: 'john doe',
              address: {
                city: 'Brothers',
                country: 'US',
                line1: '27 Any Street',
                postal_code: '90210',
                state: 'CA',
              }
            })

          Rails.logger.info request

        end
    end
end

这里的想法是,一旦我让测试工作,我将通过 id 值传递实际用户信息。

从 rails 控制台添加堆栈跟踪。

irb(main):001:0> Stripe::CustomerApi.new(30).create_stripe_customer
  User Load (7.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 30], ["LIMIT", 1]]
  CompanyProfile Load (2.7ms)  SELECT  "company_profiles".* FROM "company_profiles" WHERE "company_profiles"."user_id" = $1 LIMIT $2  [["user_id", 30], ["LIMIT", 1]]
Traceback (most recent call last):
        3: from (irb):1
        2: from app/services/stripe/customer_api.rb:15:in `create_stripe_customer'
        1: from app/services/stripe/stripe_client.rb:11:in `initialize'
ArgumentError (wrong number of arguments (given 1, expected 0))

跟踪引用了stripe_client文件,我不确定为什么。这是一个单独的文件,我尝试使用 REST API 进行相同的 API 调用。它没有相同的方法。

Ruby-on-Rails Ruby 方法

评论

0赞 smathy 9/28/2023
显示堆栈跟踪。
0赞 John Gerard 9/28/2023
@smathy从控制台添加的内容
0赞 John Gerard 9/28/2023
stripe_client.rb 文件确实有一个 intialize 方法。我正在考虑删除它。
0赞 smathy 9/28/2023
好吧,这个文件的第 15 行也是你的哈希元素。我不认为你正在运行你认为你正在运行的东西。您是否编辑了一些代码并且可能没有重新加载控制台?:name

答:

0赞 John Gerard 9/28/2023 #1

下崽。我是个白痴。堆栈跟踪显示如下:

from app/services/stripe/stripe_client.rb:11:in `initialize' 

我正在同一文件夹区域中的两个不同文件中调用这两个初始化方法。我猜这是不行的。我删除了我不使用的方法,它测试了 SAT。

1赞 Vishwani patlan 9/28/2023 #2

我假设两个文件的文件夹结构不同,并且两个文件的名称不同 我使用文件夹结构在本地计算机上运行您的代码 应用/服务/条纹/customer_api.rb

当我运行下面提到的命令时,此代码工作正常 你应该尝试同样的方法

Stripe::CustomerApi.new(1).create_stripe_customer

评论

0赞 John Gerard 9/29/2023
我在同一文件夹中有一个带有初始化方法的第二个文件。出于某种原因,该命令调用了这两个初始化方法。