form_for rails 4中的参数数量错误

时间:2013-04-29 12:05:55

标签: ruby-on-rails ruby-on-rails-4

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

错误的参数数量(3个用于2)。这是我的代码

   <%= form_for @email, :url => alerts_path do |f| %>
   <% end %>

5 个答案:

答案 0 :(得分:23)

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

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

希望这有帮助。

答案 1 :(得分:9)

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

如果你谷歌这个问题你可能会发现这个GitHub issue将它归因于“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还没有新的版本,因此我只能假设宝石中的某些东西与Rails 4的表现不太好。如果我发现问题具体是什么,我会更新这个答案。不得不“停止使用”meta_search似乎有点蹩脚,但到目前为止,这是我能提供的。谢谢!

答案 2 :(得分:0)

您的语法是正确的。 尝试改变它:

<%= 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行

让我知道它是否有效

答案 3 :(得分:0)

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

答案 4 :(得分:0)

删除gem&#39; meta_search&#39;从您的宝石文件,并考虑使用宝石搜索。 https://github.com/activerecord-hackery/ransack