我升级到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| %>
这实际上允许页面呈现,但是当我尝试输入填充文本字段并在数据库中提交或创建记录时,我收到一条内置在应用程序中的错误消息:
所有字段都设置为字符串。
哦,显然我在提交之前填写了所有这些字段。所以现在我只是卡住了。
感谢任何帮助。
答案 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
方法中的第一个参数。