Rispettare le convenzioni

Spesso e’ complicato a meno che, come al solito e come e’ sicuramente
probabile si tratti di impostazione sbagliata.
Modelli:

Customer
has_many :deliveries
has_one :document

Delivery
belongs_to :customer
belongs_to :operator
has_many :delivery_items
has_many :products, :through => :delivery_items

Document
belongs_to :customer

Product
has_many :delivery_items
has_many :deliveries, :through => :delivery_items

L’utente che utilizza l’applicazione deve:
fare una ricerca del Customer, una volta trovato deve poter
visualizzare i dettagli del customer e, tramite un form, associargli
un Delivery e un Document, contemporaneamente al Delivery deve essere
associati uno o piu’ Products.
Quello che ho pensato di fare e’ visualizzare il form nella view show
di Customer:

CustomersController
def show
@customer = Customer.find(params[:id])
@delivery = Delivery.new
@document = Document.new
@products = Product.all
end

show.html.erb

<%= Customer.human_attribute_name("full_name") %>: <%= @customer.full_name %>

. . . <%= render 'deliveries/form' %>

il partial e’:
<%= simple_form_for([@customer, @delivery]) do |f| %>


<%= f.input :delivered_at, :as => :hidden, :input_html => {
:value => Date.today } %>



<% for product in @products %>
<%= check_box_tag ‘delivery[product_ids][]’, product.id,
@delivery.products.include?(product) %>
<%= product.description %>

<% end %>
<%= f.error :products%>



<%= simple_fields_for @document do |doc| %>


<%= doc.label :doc_type %>:

<%= doc.text_field :doc_type %>
<%= doc.error :doc_type %>



<%= doc.label :doc_number %>:

<%= doc.text_field :doc_number %>
<%= doc.error :doc_number %>



<%= doc.label :issued_by %>:

<%= doc.text_field :issued_by %>
<%= doc.error :issued_by %>


<% end %>

Nel routes.rb ho:

resources :customers do
resources :deliveries
end

Tutto funziona ma quello che non mi sfagiola e’ la creazione degli
oggetti @delivery e @document dentro l’action show che per definizione
dovrebbe essere usata per mostrare non per creare.
Non trovo pero’ altre soluzioni per far funzionare il form di cui sopra.