Rails form_for @form“表单中的第一个参数不能包含nil或为空”

时间:2017-03-18 21:25:59

标签: html ruby-on-rails

当我将form_for与主页表单元素一起使用时,我收到错误“表单中的第一个参数不能包含nil或为空”。不知道我做错了什么。

home.html.erb

<%= form_for @form do |f| %>
  <div class="form-group">
    <%= f.text_field :userInput, placeholder: "Press 'Enter' to move on.", class: 'form-control' %>
  </div>
<% end %>

forms_controller.rb

class FormsController < ApplicationController
 def new
  @form = Form.new
 end
 def create
  @form = Form.new(form_params)
  @form.save!
 end
 private
  def form_params
   params.require(:form).permit(:userInput)
  end
end

编辑:所以我建议将代码从FormsController移动到已经呈现主页的PagesController,但同样的错误仍然存​​在。这是PagesController:

class PagesController < ApplicationController
  def home
  end
  def new
    @form = Form.new
  end
  def create
    @form = Form.new(form_params)
    @form.save!
  end
  private
  def form_params
    params.require(:form).permit(:userInput)
  end
end

1 个答案:

答案 0 :(得分:0)

FormController呈现home.erb.html视图吗?控制器只有newcreate操作,因此我认为该视图应该被命名为new.erb.html,或者应该抛出一个错误,说该视图不是&# 39; t found。

在出现此错误的情况下,似乎另一个控制器正在呈现视图,其中该控制器应该设置@form = Form.new实例变量。

您能确认home.erb.html居住的路径吗?