我在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 %>
答案 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
视图中显示单个记录的表单似乎很奇怪。
更有可能的是,您希望在new
或edit
视图中使用该表单(在前一种情况下,您通常使用new
,而在后一种情况下,您将使用{ {1}}方法查找特定记录并让用户编辑它。)
在find
方法中,您通常使用控制器选择一组记录(例如,index
以获取所有记录)并在视图中迭代它们(@ps = Personal.all
)
P.S。 show方法应该使用@ps.each do |person| .... end
而不是Personal.find(params[:id])