Ruby on rails RubyonRails。ArgumentError(参数数目错误(1代表5))。标题应该匹配
我确信这是一件愚蠢的事情,但它踢我的屁股。我得到ArgumentError(错误的参数数量(1对5)),但就我所见,头和方法调用匹配 错误页(照片) 错误页(文本,与照片相同) 这是我打电话的控制器Ruby on rails RubyonRails。ArgumentError(参数数目错误(1代表5))。标题应该匹配,ruby-on-rails,ruby,arguments,Ruby On Rails,Ruby,Arguments,我确信这是一件愚蠢的事情,但它踢我的屁股。我得到ArgumentError(错误的参数数量(1对5)),但就我所见,头和方法调用匹配 错误页(照片) 错误页(文本,与照片相同) 这是我打电话的控制器 class MessageServiceController < ApplicationController include MessageServiceHelper def put $messageSplit = params[:message].split(",")
class MessageServiceController < ApplicationController
include MessageServiceHelper
def put
$messageSplit = params[:message].split(",")
$to_host = $messageSplit[0]
$from_host = $messageSplit[1]
$service = $messageSplit[2]
$message = $messageSplit[3]
$arguments = $messageSplit[4]
storeMessage(from_host:$from_host, to_host:$to_host, service:$service, message:$message, arguments:$arguments)
render :layout => false
end
我看不出有什么问题,但我已经想了一天了。注意,我已经看了关于错误数量的论点的其他问题,它们似乎是不同的问题
谢谢您的帮助。您的错误表明您给了一个需要五个参数的方法一个参数:
storeMessage
被定义为需要五个参数,但是当您在控制器上调用它时,您只传递了一个散列:
storeMessage(from_host:$from_host, to_host:$to_host, service:$service, message:$message, arguments:$arguments)
按以下方式更改您的通话:
storeMessage($from_host, $to_host, $service, $message, $arguments)
你会看到错误消失了
从您的代码中,我认为您正在将Ruby语法与其他语言(如PHP)混合。我建议你看一下设计和风格指南。更准确地说,您正在控制器中定义所有变量(使用$
),我很确定您不需要/不想这样做
storeMessage(from_host:$from_host, to_host:$to_host, service:$service, message:$message, arguments:$arguments)
storeMessage($from_host, $to_host, $service, $message, $arguments)