这是我的第一个问题。我希望你能帮助我。我有两个模型。
class Cliente < ActiveRecord::Base
attr_accessible :cedula, :direccion, :nombres, :telefono
validates :cedula, :direccion, :nombres, :telefono, :presence => true
validates :cedula, :uniqueness => { :message => "Cedula ya en uso" }
has_many :facturas
class Factura < ActiveRecord::Base
attr_accessible :cliente_attributes, :iva, :numero, :subtotal, :total, :created_at
belongs_to :cliente
accepts_nested_attributes_for :cliente
我希望在 facturas#new 视图中可以创建或编辑 Cliente。如果存在更新或者如果不存在创建。我正在使用嵌套属性。如果存在,我使用 javascript 来填充文本字段。如果不存在,我填充文本字段并在 Factura 保存时保存。这是事实#新观点。
<h1>Nueva Factura</h1>
<%= form_for @factura do |f| %>
<% if @factura.errors.any? %>
<h2>Errores:</h2>
<ul>
<% @factura.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
<p>
<div class = "contenedor_factura">
<%= f.label :numero %><br />
<%= f.number_field :numero %><br />
<%= f.label :fecha %><br />
<%= f.date_select :created_at %><br />
</div>
<div class = "contenedor_cliente">
<%= f.fields_for @cliente do |builder| %>
<%= builder.label :cedula, "Cédula" %>
<%= builder.text_field :cedula %>
<%= builder.label :nombres, "Nombres" %>
<%= builder.text_field :nombres %>
<%= builder.label :direccion, "Dirección" %><br />
<%= builder.text_field :direccion %>
<%= builder.label :telefono, "Teléfono" %><br />
<%= builder.text_field :telefono %>
<%= builder.hidden_field :id%>
<% end %>
</div>
<div class = "contenedor_productos">
</div>
<%= f.label :subtotal %><br />
<%= f.text_field :subtotal %>
<br />
<%= f.label :iva %><br />
<%= f.text_field :iva %>
</p>
<p>
<%= f.submit "Agregar Nueva Factura" %>
</p>
<% end %>
当客户是新的我没有问题,它保存,但如果客户存在我有这个消息
ActiveRecord::RecordNotFound in FacturasController#create
Couldn't find Cliente with ID=6 for Factura with ID=
我的问题是什么?
编辑:
这是我的 FacturasController
def new
@factura = Factura.new
@cliente = @factura.build_cliente
end
def create
@factura = Factura.new(params[:factura])
if @factura.save
redirect_to facturas_path, :notice => "Factura Guardada"
else
render "new"
end
end