1

我已升级到 rails 3.2.13,并且正在迁移旧应用程序以在新环境(ruby1.9.3)中运行。该应用程序在 ruby​​192 和 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| %>

这实际上允许页面呈现,但是当我尝试输入填写文本字段并在数据库中提交或创建记录时,我收到一条内置在应用程序中的错误消息,上面写着:那些字段都是空白的

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

哦,很明显,在我点击提交之前,我已经填写了所有这些字段。所以现在我被困住了。

任何帮助将不胜感激。

4

1 回答 1

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

于 2013-03-26T22:47:26.360 回答