2009-11-15 4 views
1

Une fois de plus, j'ai mes form_for pour mon modèle Order, qui has_many :services, :through => :requests. Voici la mise en page de la façon dont j'ai mes relations cartographié:RoR: cases à cocher dans form_for pour has_many,: à travers avec un modèle Join

__________        _________ 
| Customer |        | Utility | 
----------        --------- 
    || ^         /\ 
    || |          || 
    \/ |          /\ 
    _______   _________    _________ 
    | Order | <=====< | Request | >=====> | Service | 
    -------   ---------    --------- 
               \/ 
               || 
               \/ 
              _________ 
              | Company | 
              --------- 

Où:

--->     = belongs_to 
===>     = has_many 
<==< join model >==> = has_many, :through 

Sur mon formulaire de commande, je veux avoir un tableau de cases à cocher qui représentent les services disponibles, de sorte que même si les cases à cocher sont étiquetées par le Company et classées par Utility, le Order se termine par l'association Service lorsque la commande est terminée (parce que c'est vraiment ce que le client commande: une société pour fournir un utilitaire, qui est un service).

Comment est-ce que j'accomplis ceci dans mon formulaire?


forme Vue:

- form_for @order do |order_form| 
    -# order form inputs, etc. 
    - order_form.fields_for :customer do |customer_form| 
    -# customer form inputs 
    - order_form.fields_for :services do |services_form| 
    %dl 
     - @services.each do |service_name, services| 
     %dt= service_name 
     - services.each do |service_item| 
      %dd 
      =# check_box ?????????? 
      =# label ??????????, Company.find(service_item.company_id).name 
    %p= order_form.submit 'Create Order' 

Où:

@services = Service.all.to_set.classify { |service_item| Utility.find(service_item.utility_id).name } 

Répondre

2

Il y a un Railscast sur HABTM checkboxes - c'est un oldie mais goodie. Je suis sûr que cela devrait fonctionner même avec un modèle de jointure.

+2

Si seulement tous les problèmes de la vie pouvaient être résolus par les Railscasts de Ryan Bates ... ce serait la vie. Merci; C'est exactement ce dont j'avais besoin! – neezer