Итак, в этой ситуации вы хотите построить subscription
на customer
.Поскольку вы в значительной степени на правильном пути, это должно быть так же просто, как изменить эту
_form.html.haml
= form_for @customer do |f|
= f.fields_for :subscriptions do |subscription_fields|
= subscription_fields.collection_select(:service_id, Service.all, :id, :name, { :prompt => 'Select Package' })
= f.submit "Add Service", class: "btn"
моделей /customer.rb
class Customer < ActiveRecord::Base
has_many :subscriptions, :dependent => :destroy
has_many :services, :through => :subscriptions
accepts_nested_attributes_for :subscriptions
end
Прямо сейчас причина, по которой вы получаете что-либо, заключается в том, что вы заставляете форму отправлять новый атрибут с именем service
, а затем возвращаетданные из fields_for
.С accepts_nested_attributes_for {model}
вы должны искать params
с чем-то вроде {model}_attributes
Кроме того, причина, по которой вы ничего не получаете при использовании :services
в fields_for
, заключается в том, что Service
не отвечает на service_id
.