Rails中的嵌套属性3
任何人都可以通过Rails 3中的嵌套属性来引导我吗?
我有两个模型:证书和保管人,相关如下:
证书型号:
class Certificate < ActiveRecord::Base belongs_to :shareholder belongs_to :custodian belongs_to :issuer accepts_nested_attributes_for :custodian, :shareholder, :issuer end
证书控制器:
class CertificateController < ApplicationController def issue @certificate = Certificate.new @certificate.custodian.build end end
我的看法:
{:action => 'testing'}) do |f| -%>
'Working....' %>
现在,出于某种原因,在第4行的控制器中: @certificate.custodian.build
我收到了这个错误: undefined method 'build' for nil:NilClass
任何人都可以帮忙吗?
accepts_nested_attributes_for应该在一对多关系中站在一边。
class Custodian < ActiveRecord::Base has_many :certificates accepts_nested_attributes_for :certificates end
所以,在你看来,应该没有fields_for:custodian,它是错误的一面。 如果必须从该视图构建证书,则必须列出可用的保管人,可能在选择框中。
有了belongs_to,它应该是
@certificate.build_custodian
这条线
<% f.fields_for :custodian do |custodian| -%>
应该
<%= f.fields_for :custodian do |custodian| -%>