これが私の最初の質問です。あなたが私を助けてくれることを願っています。私は2つのモデルを持っています。
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の保存時に保存します。これはfacturas#newビューです。
<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 %>
Clienteが新しい場合、問題はありませんが、保存されますが、Clienteが存在する場合は、このメッセージが表示されます。
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