form_for rails 4中的参数数量错误

我正在使用form_for标签,它在Rails 3.0.4环境中工作。 但是当我尝试将我的项目更新为Rails 4.它会出现以下错误

错误的参数数量(3表示2)。 这是我的代码

 alerts_path do |f| %>  

我看不到你的form_for有任何问题,你能发布exception的回溯吗? 可能是另一个gem覆盖默认的form_for?

尝试删除可能尝试更改视图中的内容的内容。

在我的情况下,问题是client_side_validations gem

希望这可以帮助。

不知道为什么,但从我的Gemfile中删除“meta_search”gem修复了我在Rails 4上的确切问题。

如果你谷歌这个问题你可能会发现这个GitHub问题将其归因于“client_side_validations”gem,但使用该repo建议的“rails-4-quick-fixes”分支并没有为我解决问题。

我认为simple_form_for的错误是一个红色的鲱鱼,因为即使使用form_for内置的Rails也会得到相同的错误,并且无论我实际传递给任何一种方法的参数多少,都会得到wrong number of arguments (3 for 2)

自2012年2月2日以来,meta_search还没有新版本,因此我只能假设gem中的某些东西与Rails 4的表现不太好。如果我发现问题的具体内容,我会更新这个答案。 不得不“停止使用”meta_search似乎有点蹩脚,但到目前为止,这是我能提供的。 谢谢!

你的语法是正确的。 尝试更改它:

 <%= form_for(@email, url: alerts_path) do |f| %> #form fields goes here <% end %> 

我试着看看Rails 4.0 API中form_for源代码是否有任何变化; 它仍然是一样的。

请访问https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/form_helper.rb查看262行。

如果有效,请告诉我

从您的gem文件中删除gem’meta_search’,并考虑使用gem ransack。 https://github.com/activerecord-hackery/ransack