Versuchen, ein Formular mit verschachtelten Attributen zu erstellen
Ich bin ein Anfänger in Rails, also bin ich ziemlich fest mit den verschachtelten Attributen.
Hier ist eine Übersicht über das, wonach ich suche:
Ein Mietwagen kann Autos erstellen. (Fertig)
unden können ein Auto reserviere
Clients werden mit der Reservierung gleichzeitig vom Mietwagen erstellt.
Ich versuche, ein Reservierungsformular zu erstellen, das sowohl den Kunden als auch die Reservierungsinformationen enthält, da alle Informationen vom Mietwagen ausgefüllt werden.
Deshalb muss ich verschachtelte Attribute verwenden, aber bis jetzt habe ich einige Schwierigkeiten. Ich habe vier Modelle:
class Car < ActiveRecord::Base
belongs_to :rentalcar
has_many :photos
has_many :reservations
end
.
class Client < ActiveRecord::Base
has_many :reservations
end
.
class Reservation < ActiveRecord::Base
belongs_to :client
belongs_to :car
end
.
class rentalcar < ActiveRecord::Base
has_many :cars
has_many :reservations
end
Die Form
<%= form_for([@car, @car.reservations.new]) do |f| %>
<div class="row">
<div class="col-md-12 price_tag">
<span><%= @car.price %>Dhs</span>
<span class="pull-right">Par jour</span>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label>Nom</label>
<%= f.text_field :nom, placeholder: 'Nom', class: 'form-control' %>
</div>
<div class="col-md-6">
<label>Prenom</label>
<%= f.text_field :prenom, placeholder: 'Prenom', class: 'form-control', disabled: 'true' %>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label>CIN</label>
<%= f.text_field :cin, placeholder: 'CIN', class: 'form-control' %>
</div>
<div class="col-md-6">
<label>Age</label>
<%= f.text_field :age, placeholder: 'Age', class: 'form-control', disabled: 'true' %>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label>Ville</label>
<%= f.text_field :ville, placeholder: 'Ville', class: 'form-control' %>
</div>
<div class="col-md-6">
<label>Télephone</label>
<%= f.text_field :telephone, placeholder: 'Telephone', class: 'form-control', disabled: 'true' %>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label>Email</label>
<%= f.text_field :email, placeholder: 'Email', class: 'form-control' %>
</div>
</div>
<%= f.fields_for :reservations do |reservation_form| %>
<div class="row">
<div class="col-md-6">
<label>Check In</label>
<%= reservation_form.text_field :start_date, readonly: 'true', placeholder: 'Start Date', class: 'form-control' %>
</div>
<div class="col-md-6">
<label>Check Out</label>
<%= reservation_form.text_field :end_date, readonly: 'true', placeholder: 'End Date', class: 'form-control', disabled: 'true' %>
</div>
</div>
<%= reservation_form.hidden_field :car_id, value: @car.id %>
<%= reservation_form.hidden_field :price, value: @car.prix %>
<%= reservation_form.hidden_field :total, id: 'reservation_total' %>
<% end %>
<h4><span id="message"></span></h4>
<div id="preview" style="display: none">
<table class="reservation-table" >
<tbody>
<tr>
<td>Day(s)</td>
<td><span id="reservation_days"></span></td>
</tr>
<tr>
<td>Total</td>
<td><span id="reservation_sum"></span>Dhs</td>
</tr>
</tbody>
</table>
<br>
</div>
<br>
<%= f.submit "Book Now", id:"btn_book", class: "btn btn-primary wide", disabled: 'true' %>
So ist die Idee, dieses Formular zu erhalten, nachdem Sie etwas getan haben wie: cars / 1 / reservate. Und wir werden so etwas in der Steuerung haben:
def reservate
@car = Car.find(params[:id])
@client = Client.new
@client.reservations.build
end
aber ich weiß nicht in welcher Steuerung es bleiben soll
Edit1:
Indexes:
add_index "reservations", ["client_id"], name: "index_reservations_on_client_id", using: :btree
add_index "reservations", ["car_id"], name: "index_reservations_on_car_id", using: :btree
add_index "voitures", ["rentelcar_id"], name: "index_voitures_on_rentelcar_id", using: :btree
add_foreign_key "reservations", "clients"
add_foreign_key "reservations", "cars"
add_foreign_key "cars", "rentelcars"