[英]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
似乎是錯誤數量參數錯誤的原因。
您可以通過以下兩種方式之一修復它:
cancelled_mino_paid
方法時,確保它可以接收 3 個參數cancelled_mino_paid
方法時只發送 2 個參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.