因此,对于那些得到这样的消息的人来说,“为什么我会收到此错误?”的基本答案。问题在于某个地方你指定了一个方法的错误数量的参数,不管你认为这是多么模糊或者错误 - 在你的代码中几乎肯定是一个错字。下面是我碰到的一个案例。“创建”动作中的“参数数量错误(1代表0)”
我有以下方法误差的功能测试,他说,第一个“Quality.create!(...”语句的参数太多,这没有任何意义,我在所有。
运行的Ruby 1.8的Rails 2.3.5
def reset_quality_lut
Quality.delete_all
Quality.create!(:value => 1, :name => "Scrap", :extended_name => " (only good for parts)" )
Quality.create!(:value => 2, :name => "Heavy use", :extended_name => " (needs work)" )
Quality.create!(:value => 3, :name => "Medium use", :extended_name => " (some functional damage)")
Quality.create!(:value => 4, :name => "Light use", :extended_name => " (cosmetic damage only)" )
Quality.create!(:value => 5, :name => "New", :extended_name => " (or like new)" )
Quality.create!(:value => 0, :name => "Any", :extended_name => "/all" )
end
什么方法是应该做的是删除,然后在该表中重新创建所有的值。
这里请求ED堆跟踪(请注意,我得到同样的事情,如果我有取代“.create“新(....)保存”:
1) Error:
test_should_create_an_admin_user_on_app_setup(SetupControllerTest):
ArgumentError: wrong number of arguments (1 for 0)
app/controllers/setup_controller.rb:43:in `reset_quality_lut'
app/controllers/setup_controller.rb:23:in `create'
/test/functional/setup_controller_test.rb:78:in `test_should_create_an_admin_user'
在应用中,这是什么控制器并为让您在初始设置后设置应用程序。所以......
www.myapp.com/setup/new
带来您可以在您输入的第一个管理员用户名和密码的页面。成功时,只要数据库中有1个管理员用户,此操作就变得无法访问。
编辑:如果我尝试“Quality.new.save”,我得到一个零错误。似乎我的“新”方法返回零由于一些奇怪的原因。
FWIW,除非你明确地使用'.create!'出于验证的原因,只需使用'.create'。 – mway 2010-10-07 21:23:38
您的方法的前四行可以用'Quality.delete_all'替换。更短,更快。 – 2010-10-07 23:53:04
请发布堆栈跟踪。 – jdl 2010-10-08 00:57:03