簡體   English   中英

Ruby web應用程序,得到“錯誤數量的參數(給定3,預期2)”錯誤

[英]Ruby webapplication, getting "wrong number of arguments (given 3, expected 2)" error

我對我們 webapp 中的一個控制器進行了一些更改。 本質上,如果訂單被取消,控制器會向客戶發送一封電子郵件,並更改數據庫中訂單的狀態。 這是片段最初的樣子:

  elsif @ac == "mino"
    begin
      @wifi_order = WifiOrder.find(params["id"])
      ApplicationMailer.cancelled_mino(@wifi_order, WifiUser.find_by(email: @wifi_order.email), 10000).deliver_now
      @wifi_order = WifiOrder.find(params["id"])
      @wifi_order.order_status = "status_cancelled_pending_fees"
      @wifi_order.order_status_sub = "status_cancelled_force"
      @wifi_order.cancelled_at = DateTime.now
      @wifi_order.payment_next = nil 
      @wifi_order.confirm = nil 
      @wifi_order.save!
    rescue => e
      p e.message
      flash[:error] = e.message 
      return
    end 

這就是我改變它的原因,因為我想根據付款方式設置發送兩種不同類型的電子郵件:

  elsif @ac == "mino"
    begin
      @wifi_order = WifiOrder.find(params["id"])
      if @wifi_order.pay_type = "card"
        ApplicationMailer.cancelled_mino(@wifi_order, WifiUser.find_by(email: @wifi_order.email), 10000).deliver_now
      else
        ApplicationMailer.cancelled_mino_paid(@wifi_order, WifiUser.find_by(email: @wifi_order.email), 10000).deliver_now 
      end
      @wifi_order = WifiOrder.find(params["id"])
      @wifi_order.order_status = "status_cancelled_pending_fees"
      @wifi_order.order_status_sub = "status_cancelled_force"
      @wifi_order.cancelled_at = DateTime.now
      @wifi_order.payment_next = nil 
      @wifi_order.confirm = nil 
      @wifi_order.save!
    rescue => e
      p e.message
      flash[:error] = e.message 
      return
    end  

自從更改以來,當我嘗試對其進行測試時,出現此錯誤:

wrong number of arguments (given 3, expected 2)

我做錯了什么?

為什么會發生

您得到解決方案提示的參數數量錯誤。

它詳細說明了一個方法在您發送 3 個參數時需要 2 個參數。

def say_hello(first_name, last_name)
 puts "#{first_name} #{last_name}"
end

say_hello("John", "Doe") # -> will work
say_hello("John", "Von", "Doe") # -> will raise wrong number of arguments error

如何修復它

乍一看,您添加的方法cancelled_mino_paid似乎是錯誤數量參數錯誤的原因。

您可以通過以下兩種方式之一修復它:

  1. 在定義cancelled_mino_paid方法時,確保它可以接收 3 個參數
  2. 調用cancelled_mino_paid方法時只發送 2 個參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM