form_for方法中的参数数量错误(3表示2)

时间:2013-03-26 22:30:33

标签: ruby-on-rails ruby-on-rails-3

我升级到rails 3.2.13并且我正在迁移一个旧应用程序以在新环境中运行(ruby1.9.3)。应用程序运行ruby192和rails 3.0.0。

我在尝试创建新记录(消防员)时收到此错误

错误的参数数量(3为2)

这是我的表格代码

<%= form_for :fire_fighter, @fire_fighter, :url => { :action => "create" } do |f| %>

基于阅读其他帖子,他们建议删除“fire_fighter”,但它看起来像这样

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>

这实际上允许页面呈现,但是当我尝试输入填充文本字段并在数据库中提交或创建记录时,我收到一条内置在应用程序中的错误消息:That the fields were all left blank

所有字段都设置为字符串。

哦,显然我在提交之前填写了所有这些字段。所以现在我只是卡住了。

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

虽然当您发布页面源代码和其他表单代码时,此答案可能会更改,但您尝试从实例变量创建符号。

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>

注意:@fire_fighter。它应该是@fire_fighter。那么正确的代码应该是

<%= form_for @fire_fighter, :url => { :action => "create" } do |f| %>

您使用像@fire_fighter这样的实例变量的原因是因为在您的控制器中应该有类似

的内容
def new
  @fire_fighter = FireFighter.new
end

这样,表单直接从控制器抓取实例变量到表单上。符号不是从控制器到视图的横向,而是实例变量,因此使用@fire_fighter作为form_for方法中的第一个参数。