ActionController :: ParameterMissing [英] ActionController::ParameterMissing
问题描述
我做了一个应用程序,有一个 personsController
类,有一个动作显示和新的。我还创建了 Person
模型:
name:string surname:string partner:references
合作伙伴
字段应引用另一个人。在新操作中,我创建了一个表单以将新人员插入数据库:
<%= form_for:person,url :persons_path do | f | %>
< p>
<%= f.label:name%>
<%= f.text_field:name%>
< / p>
< p>
<%= f.label:surname%>
<%= f.text_field:surname%>
< / p>
< p>
<%= f.label:partner%>
<%= f.number_field:partner,value:0%>
< / p>
< p>
<%= f.submit%>
< / p>
<%end%>
这是 personsController
方法create: / p>
def create
@ person = Person.new(post_params)
@ Person.save
redirect_to @person
private
def post_params
params.require(:post).permit(:partner,:name,:surname);
end
问题是当我提交表单时出现错误: p>
>
更新
我将说明更改为:
params.require(:person).permit(:partner,:name,:surname);
但我仍然收到错误:
PersonsController中的NameError#create
未初始化的常数Person :: Partner
模型:
class Person< ActiveRecord :: Base
belongs_to:partner
end
这里的问题是:
从你的模型 post
p>
因此改变了这一点:
def post_params
params.require (:post).permit(:partner,:name::surname);
end
到
def post_params
params.require(:person).permit(:partner_id,:name,:surname)
end
EDIT
使用partner_id而不是合作伙伴
< p>
<%= f.label:partner%>
<%= f.number_field:partner_id,value:0%>
< / p>
I have made an application that has a
personsController
class, with an action show and new. I also created thePerson
model this way:rails generate model Person name:string surname:string partner:references
The
partner
field should reference another person. In the new action I created a form to insert a new person into the database:<%= form_for :person , url: persons_path do |f| %> <p> <%= f.label :name %> <%= f.text_field :name %> </p> <p> <%= f.label :surname %> <%= f.text_field :surname %> </p> <p> <%= f.label :partner %> <%= f.number_field :partner , value: 0 %> </p> <p> <%= f.submit %> </p> <% end %>
This is the
personsController
method create:def create @person= Person.new(post_params) @Person.save redirect_to @person private def post_params params.require(:post).permit(:partner,:name,:surname); end
The problem is that I get an error when I submit the form:
Update
I changed the instruction to:
params.require(:person).permit(:partner,:name,:surname);
But I still get an error:
NameError in PersonsController#create
uninitialized constant Person::PartnerPerson model:
class Person < ActiveRecord::Base belongs_to :partner end
解决方案This is the problem here:
From your model
post
is not a defined attributeso changed this:
def post_params params.require(:post).permit(:partner,:name,:surname); end
to
def post_params params.require(:person).permit(:partner_id,:name,:surname) end
EDIT
use partner_id instead of partner for your foreign key
<p> <%= f.label :partner %> <%= f.number_field :partner_id, value: 0 %> </p>
这篇关于ActionController :: ParameterMissing的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!