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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs