0

我的代码非常简单,但我不知道错误来自哪里。我正在访问 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>

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

编辑以简化代码

4

1 回答 1

0

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

错误来自于我创建了一个名为fields_for. 将我的函数名称更改为不同的名称可以解决问题。

如果有人可以解释:

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

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

于 2013-03-10T01:41:12.917 回答