2013-03-26 63 views
1

我已升级到rails 3.2.13,并且正在迁移旧应用程序以在新环境(ruby1.9.3)中运行。该应用程序与ruby192和rails 3.0.0运行良好。在form_for方法中参数的错误数量(3为2)

试图创造一个新的记录,当我收到此错误(2 3)(消防队员)

错误的参数数目

这里是我为我的表单代码

<%= 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

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

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

任何帮助,将不胜感激谢谢。

回答

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方法中的第一个参数。

相关问题