Intentando hacer un formulario usando atributos anidados

Soy un principiante en rieles, así que estoy bastante atrapado con los atributos anidados.

Aquí hay una descripción general de lo que estoy buscando:

Un auto alquilado puede crear autos (hecho)

Los clientes pueden reservar un auto.

Los clientes son creados con la reserva al mismo tiempo por el coche de alquiler.

Estoy tratando de hacer un formulario de reserva que contendrá tanto el cliente como la información de la reserva, ya que será el auto de alquiler quien llene toda la información.

Es por eso que necesito usar atributos anidados, pero hasta ahora tengo algunas dificultades. Tengo cuatro modelos:

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 

La forma :

<%= 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' %>

Entonces, la idea es obtener este formulario después de hacer algo como: cars / 1 / reservate. Y tendremos algo como esto en el controlador:

def reservate
 @car = Car.find(params[:id])
 @client = Client.new
 @client.reservations.build
end 

pero no sé en qué controlador debería permanecer

Editar1:

Índices:

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"

Respuestas a la pregunta(1)

Su respuesta a la pregunta