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

Rub*_*012 1 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| %>
Run Code Online (Sandbox Code Playgroud)

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

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>
Run Code Online (Sandbox Code Playgroud)

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

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

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

任何帮助将不胜感激.

jas*_*328 5

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

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %>
Run Code Online (Sandbox Code Playgroud)

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

<%= form_for @fire_fighter, :url => { :action => "create" } do |f| %>
Run Code Online (Sandbox Code Playgroud)

你使用类似实例变量的原因@fire_fighter是因为在你的控制器中应该有类似的东西

def new
  @fire_fighter = FireFighter.new
end
Run Code Online (Sandbox Code Playgroud)

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