“形式中的第一个参数不能包含nil或为空”

时间:2014-12-13 11:49:34

标签: ruby-on-rails ruby

我在ruby on rails语法上遇到了困难。

我收到了这个错误

  

表单中的第一个参数不能包含nil或为空

class PersonalsController 
   def index

   end
   def create   
      @personal = Personal.new
   end
   def new
      @personal = Personal.new      
   end
   def show
      @personal = Personal.find([:id])
   end
end       

index.html.erb

<%= form_for @personal do |f| %>
  <%= f.label :title %><br>
  <%= f.text_field :title %>
  <%= f.submit %>  
<% end %>

2 个答案:

答案 0 :(得分:0)

@personal的值为零,这就是您收到错误的原因。

像这样改变你的代码

def index
  @personal= Personal.all
end

form_for is helper method

点击此链接form_helper

答案 1 :(得分:0)

由于未在控制器中设置@personal,因此生成错误。因此,您可以向@personal = Personal.new方法添加index,或将其设置为特定的数据库条目,例如@personal = Personal.find(1)

但是,在index视图中显示单个记录的表单似乎很奇怪。

更有可能的是,您希望在newedit视图中使用该表单(在前一种情况下,您通常使用new,而在后一种情况下,您将使用{ {1}}方法查找特定记录并让用户编辑它。)

find方法中,您通常使用控制器选择一组记录(例如,index以获取所有记录)并在视图中迭代它们(@ps = Personal.all

P.S。 show方法应该使用@ps.each do |person| .... end而不是Personal.find(params[:id])