Ruby on rails RubyonRails-关联错误

Ruby on rails RubyonRails-关联错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在RoR项目中遇到了一个关于关联的问题;我解释: 我有两张桌子: 管理-使用设计创建 联系人-使用rails标准控制台命令创建rails g scaffold Admin表与联系人的表有1:n的关联,因此在其各自的类中: 管理员: class Admin < ActiveRecord::Base has_many :contacts # Include default devise modules. Others available are: # :confirmabl

我在RoR项目中遇到了一个关于关联的问题;我解释:

我有两张桌子:

  • 管理-使用设计创建
  • 联系人-使用rails标准控制台命令创建
    rails g scaffold
Admin表与联系人的表有1:n的关联,因此在其各自的类中:

管理员:

class Admin < ActiveRecord::Base
  has_many :contacts

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

end
当我尝试创建联系人(提交按钮操作)时,在填写完所有文件后,我收到了大量验证错误,尽管我的所有字段都是有效的。 因此,我认为在create方法期间不会传递字段的任何参数

我检查了contact_params方法,但所有字段都包括在内:

def contact_params
  params.require(:contact).permit(:nome, :cognome, :indirizzo_abitazione, :numero_civico, :indirizzo_email, :indirizzo_email_2, :prefisso_cellulare, :cellulare, :telefono_casa)
end
我错在哪里

我还在这里添加了_form.html.erb代码

  <%= form_for(@contact) do |f| %>
  <% if @contact.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>

      <ul>
      <% @contact.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="form-group <%= @contact.errors[:nome].present? == true ? "has-error" : "" %>" >
    <%= f.label :nome , :class => "control-label" %><br>
    <%= f.text_field :nome, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:cognome].present? ? "has-error" : "" %>">
    <%= f.label :cognome, :class => "control-label" %><br>
    <%= f.text_field :cognome, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:indirizzo_abitazione].present? ? "has-error" : "" %>">
    <%= f.label :indirizzo_abitazione, :class => "control-label" %><br>
    <%= f.text_field :indirizzo_abitazione, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:numero_civico].present? ? "has-error" : "" %>">
    <%= f.label :numero_civico, :class => "control-label" %><br>
    <%= f.text_field :numero_civico, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:indirizzo_email].present? ? "has-error" : "" %>">
    <%= f.label :indirizzo_email, :class => "control-label" %><br>
    <%= f.text_field :indirizzo_email, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:indirizzo_email_2].present? ? "has-error" : "" %>">
    <%= f.label :indirizzo_email_2, :class => "control-label" %><br>
    <%= f.text_field :indirizzo_email_2, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:prefisso_cellulare].present? ? "has-error" : "" %>">
    <%= f.label :prefisso_cellulare, :class => "control-label" %><br>
    <%= f.text_field :prefisso_cellulare, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:cellulare].present? ? "has-error" : "" %>">
    <%= f.label :cellulare, :class => "control-label" %><br>
    <%= f.text_field :cellulare, :class => "form-control" %>
  </div>
  <div class="form-group <%= @contact.errors[:telefono_casa].present? ? "has-error" : "" %>">
    <%= f.label :telefono_casa, :class => "control-label" %><br>
    <%= f.text_field :telefono_casa, :class => "form-control" %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

禁止保存此联系人:
“控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%> “控制标签”%>
“表单控件”%>
在我看来,当您建立新联系人时,您的问题在于您的
创建方法:

@contact = @admin.contacts.build(:admin_id => @admin.id)
上述代码不包括您的
联系人参数
,因此无法通过验证。您只与
管理员id
建立联系。要通过验证,您的代码必须如下所示:

@contact = @admin.contacts.build(contact_params)

另外请注意,由于您是通过
@admin
创建联系人,因此不需要在
构建中包含
:admin\u id=>@admin.id
。Rails足够聪明,知道如何将新联系人与
@admin
关联

你能把你的表格代码寄出去吗?
@contact = @admin.contacts.build(:admin_id => @admin.id)
@contact = @admin.contacts.build(contact_params)