Ich möchte Daten für 2 verschiedene Modelle schreiben, die miteinander wie folgt verbunden sind:Wie mache ich ein Formular für zwei verwandte Modelle?
class Post < ActiveRecord::Base
has_many :roads
accepts_nested_attributes_for :roads, :allow_destroy => true
end
class Road < ActiveRecord::Base
belongs_to :post
end
Natürlich de Straßen Tisch hat eine „post_id Spalte“. Mein form_for in der Zeit nach Ansicht wie folgt aussieht
<%= form_for @post do |f| %>
<div class="form-group">
<%= f.label :Tu_Nombre %>
<%= f.text_field :creador, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :año %> (Cuando fue tu experiencia?)
<%= f.text_field :año, class: "form-control" %>
</div>
<div class="form-group">
<%= fields_for :roads do |r| %>
<%= r.label :principio %> (desde?)
<%= r.text_field :principio, class: "form-control" %>
<%= r.label :final %> (hasta?)
<%= r.text_field :final, class: "form-control" %>
<% end %>
</div>
<div class="form-group">
<%= f.label :historia %> (Cuentanos la historia de tu viaje!)
<%= f.text_area :historia, class: "form-control", size: "50x15" %>
</div>
<div>
<%= f.submit class: "btn btn-success" %>
</div>
<% end %>
Schließlich mein posts_controller Methode
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post, notice: 'Post was successfully created.'
else
render :new
end
end
mit dem privaten
def post_params
params.require(:post).permit(:historia, roads_attributes: [:pricipio, :final, :post_id])
end
Der Beitrag erstellen eingereicht wird, wenn ich überprüfen Sie die Konsole alle Attribute für Post wurde gespeichert, aber die für Straße, hat nicht. Wie kann ich nur ein Formular zwei make-Datensätze für diese beiden Modelle verwenden und dass die Post-ID registriert wird, damit ich die Tabellen beziehen kann?
Vielen Dank !!
Fast .. es für mich gearbeitet mit @ post.roads.build ... –