¿Alguien puede guiarme por los atributos anidados en Rails 3?Atributos anidados en Rails 3
que tienen dos modelos: Certificados y Custodios, relacionados de la siguiente manera:
modelo de certificado:
class Certificate < ActiveRecord::Base
belongs_to :shareholder
belongs_to :custodian
belongs_to :issuer
accepts_nested_attributes_for :custodian, :shareholder, :issuer
end
controlador certificado:
class CertificateController < ApplicationController
def issue
@certificate = Certificate.new
@certificate.custodian.build
end
end
Mi Vista:
<% form_for(:certificate, :url => {:action => 'testing'}) do |f| -%>
<div id="error">
<%= f.error_messages %>
</div>
<%= f.label :number, "Certificate Number" %>
<%= f.text_field :number %> <br/>
<%= f.label :num_of_shares, "Number Of Shares" %>
<%= f.text_field :num_of_shares %> <br/>
<% f.fields_for :custodian do |custodian| -%>
<%= custodian.label :name, "Custodian Name" %>
<%= custodian.text_field :name %>
<% end -%>
<%= f.submit "Issue Certificate", :disable_with => 'Working....' %>
<% end -%>
Ahora, por alguna razón, en mi controlador en la línea 4: @certificate.custodian.build
estoy recibiendo este error: undefined method 'build' for nil:NilClass
Puede alguien por favor ayuda?
Gracias 'Pejic' eso es exactamente lo que estoy tratando de lograr. Pero en lugar de un cuadro de selección, planeo usar Ajax para crear un campo de autocompletar. Pero por ahora, estoy interesado en hacer esto como lo describiste. –
puedo crear una nueva variable de instancia con los Custodios enumerados y mostrar un cuadro de selección, pero ¿cómo puedo volver a guardar la asociación en el modelo? –
Complete el cuadro de selección con pares de opciones de ID/nombre. Aquí hay una buena guía sobre cómo hacerlo, http://guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease Esto debería tener su forma básica en funcionamiento. Para completar automáticamente, debe compilar el JSON para que pase algo único al controlador Custodians, como un ID o un nombre si el nombre es único. –