我正在使用 form_for 标签,并且在 Rails 3.0.4 环境中可以正常工作。但是当我尝试将项目更新到 Rails 4 时,它会出现以下错误:
"wrong number of arguments (3 for 2)"。这是我的代码:
<%= form_for @email, :url => alerts_path do |f| %>
<% end %>
我正在使用 form_for 标签,并且在 Rails 3.0.4 环境中可以正常工作。但是当我尝试将项目更新到 Rails 4 时,它会出现以下错误:
"wrong number of arguments (3 for 2)"。这是我的代码:
<%= form_for @email, :url => alerts_path do |f| %>
<% end %>
尝试删除可能在视图中更改事物的东西。
在我的情况下,问题出在客户端验证宝石上。
希望能对你有所帮助。
simple_form_for
的错误是一个误导,因为即使我使用Rails内置的form_for
,也会遇到相同的错误,而且无论我实际传入任何方法的参数数量如何,都会得到wrong number of arguments (3 for 2)
。从你的 gem 文件中删除 gem 'meta_search',并考虑使用 gem ransack 替代。https://github.com/activerecord-hackery/ransack
您的语法是正确的。 尝试这样更改:
<%= 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行。
如果可以,请告诉我。
url
后面添加method: :post
并检查。 - kiddorailsalerts
是资源吗?在 routes.rb
中? - kiddorails我看不出你的form_for有什么问题,你能否回复异常的回溯信息?可能是另一个gem覆盖了默认的form_for?