RoR: Флажки в form_for для has_many: через модель соединения - PullRequest
1 голос
/ 16 ноября 2009

Еще раз, у меня есть form_for для моей Order модели, которая has_many :services, :through => :requests. Вот схема расположения моих отношений:

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

Где:

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

В моей форме заказа я хочу иметь массив флажков, которые представляют доступные службы, так что, хотя флажки помечены Company и классифицированы как Utility, Order заканчивается Service ассоциация, когда заказ завершен (потому что это действительно то, что заказывает клиент: Компания, предоставляющая Утилиту, которая является Услугой).

Как мне сделать это в моей форме?


вид формы:

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

Где:

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

1 Ответ

2 голосов
/ 16 ноября 2009

Есть Railscast на HABTM флажки - это старое, но вкусное. Я почти уверен, что он все равно должен работать даже с моделью соединения.

...