form_for ArgumentError - 参数数量错误(3表示1)

时间:2013-03-09 14:26:42

标签: ruby-on-rails

我的代码非常简单,但我无法弄清楚错误的来源。我正在访问localhost:3000 / clients / new,我收到错误wrong number of arguments (3 for 1)

堆栈跟踪

ArgumentError - wrong number of arguments (3 for 1):
  (gem) actionpack-3.2.12/lib/action_view/helpers/form_helper.rb:378:in `form_for'
  (gem) haml-3.1.8/lib/haml/helpers/action_view_mods.rb:183:in `form_for_with_haml'
  (gem) haml-3.1.8/lib/haml/helpers/xss_mods.rb:132:in `form_for_with_haml_xss'
  app/views/clients/new.html.haml:1:in `_app_views_clients_new_html_haml__386962141__622328728'

/app/controllers/clients_controller.rb

class ClientsController < ApplicationController
  def new
    @client = Client.new
  end
end

/app/models/client.rb

class Client < ActiveRecord::Base
  attr_accessible :name
end

/app/views/clients/new.html.haml

= form_for @client, remote: true do |f|
  = f.text_field :name
  = f.submit

如果我在form_for之前检查@client只有一行,我得到了这个:

=> #<Client id: nil, name: nil, created_at: nil, updated_at: nil>

任何帮助将不胜感激。感谢

编辑以简化代码

1 个答案:

答案 0 :(得分:0)

好的,修好了。即使它对大多数人来说可能没有用,我也会发布答案,但我希望它可以帮助一些

错误来自于我使用名为fields_for的函数创建了一个帮助器。将我的函数名称更改为不同的东西可以解决问题。

如果有人可以解释:

为什么我的模块中嵌套的自定义fields_for优先于action fields_for

还有为什么堆栈跟踪在第(gem) actionpack-3.2.12/lib/action_view/helpers/form_helper.rb:378行停止而不是显示我的fields_for被声明的行?