8

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

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

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

5 回答 5

23

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

就我而言,问题出在client_side_validations gem

希望这可以帮助。

于 2013-07-02T17:15:32.457 回答
9

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

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

我认为这个错误simple_form_for是一个红鲱鱼,因为即使使用 Rails built in form_for,我也会遇到同样的错误,并且wrong number of arguments (3 for 2)无论我实际传递了多少参数到任一方法中,我都会得到同样的错误。

meta_search 自 2012 年 2 月 2 日以来一直没有新版本,所以我只能假设 gem 中的某些东西在 Rails 4 中表现不佳。如果我发现具体问题出在哪里,我会更新这个答案。不得不“停止使用”meta_search 似乎有点蹩脚,但到目前为止我能提供的就这么多了。谢谢!

于 2013-08-31T17:55:14.803 回答
0

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

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

我试图查看form_forRails 4.0 API 的源代码是否有任何变化;还是一样。

在https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/form_helper.rb查看第 262 行

让我知道它是否有效

于 2013-04-29T12:18:15.567 回答
0

我看不出您的 form_for 有任何问题,您可以发布异常的回溯吗?可能是另一个 gem 覆盖了默认 form_for ?

于 2013-04-29T12:48:43.727 回答
0

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

于 2014-09-04T11:35:33.587 回答