ActionController :: ParameterMissing [英] ActionController::ParameterMissing

查看:211
本文介绍了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 the Person 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::Partner

Person model:

class Person < ActiveRecord::Base
  belongs_to :partner
end

解决方案

This is the problem here:

From your model post is not a defined attribute

so 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆