gpt4 book ai didi

ruby-on-rails - Action Controller ::参数缺失

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:03 26 4
gpt4 key购买 nike

我制作了一个应用程序,它有一个 personsController 类,有 Action 表演和新的。我还以这种方式创建了 Person 模型:

rails generate model Person name:string surname:string partner:references

partner 字段应该引用另一个人。在新的操作中,我创建了一个表单来将一个新人插入到数据库中:

<%= 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 方法创建:

def create
@person= Person.new(post_params)
@Person.save
redirect_to @person

private
def post_params
params.require(:post).permit(:partner,:name,:surname);
end

问题是当我提交表单时出现错误:

enter image description here

更新

我将指令更改为:

params.require(:person).permit(:partner,:name,:surname);

但是还是报错:

NameError in PersonsController#create
uninitialized constant Person::Partner

人物模型:

class Person < ActiveRecord::Base
belongs_to :partner
end

最佳答案

这就是问题所在:

从你的模型 post 不是定义的属性

所以改变了这个:

    def post_params
params.require(:post).permit(:partner,:name,:surname);
end

    def post_params
params.require(:person).permit(:partner_id,:name,:surname)
end

编辑

使用 partner_id 而不是 partner 作为外键

<p>
<%= f.label :partner %>
<%= f.number_field :partner_id, value: 0 %>
</p>

关于ruby-on-rails - Action Controller ::参数缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com