Прежде всего удалите объявления url_for в объявлениях fields_for, чтобы вы получили
<%= nested_form_for @location, :url => products_path(@product) do |f| %>
<%= f.label :business %>
<%= f.text_field :business %>
<%= f.label :address %>
<%= f.text_field :address %>
<%= f.fields_for :product_dates do |d| %>
<%= d.label :date %>
<%= d.date_select :date %>
<%= d.fields_for :products do |p| %>
<%= p.text_field :name %>
<%= p.text_field :price %>
<%= p.text_field :tag_list %>
<%= p.link_to_remove "Remove Product" %>
<% end %>
<%= d.link_to_add "Add", :products %>
<% end %>
<%= f.submit "Finish" %>
<% end %>
Что действительно сбивает с толку, так это весь ваш подход к маршрутизации и параметрам. Это просто не правильно. У вас есть form_for @location с: url products_path (@product). Это позволит по-королевски вызвать проблемы с отправляемыми параметрами, и в этом заключается проблема.
Придерживайтесь маршрутизации к контроллеру местоположения, а не контроллеру продуктов, удалив products_path (@product) из вашей декларации nested_form_for, и вы обнаружите, что у вас будут сохранены все необходимые записи, но вам, скорее всего, придется изменить объявление redirect_to в создаваемом location_controller. действие и то же самое для update_action.
Но зачем вообще использовать контроллер продуктов, когда вы имеете дело с локацией? Опять же, это просто не естественно и не интуитивно понятно.
И последнее. Ваши ссылки на удаление не будут работать, так как вы не добавили необходимое объявление: absolute =>: destroy к объявлениям has_many, и вы также пропускаете объявления: reject_if и: allow_destroy => true в объявлениях acceptpts_nested_attributes.
Могу ли я настоятельно рекомендовать вам
1) Используйте либо контроллер местоположения, либо контроллер продуктов, но не оба
Я имею в виду ссылку, чтобы перейти к этой форме link_to контроллера местоположения и установить все там или использовать form_for @product вместо @location и обрабатывать все в контроллере продуктов
2) внимательно следите за вещами, на которых основан этот драгоценный камень
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
3) Потратьте некоторое время на изучение того, как помощники вида рельсов организуют хэш параметров в действиях контроллеров. В вашем случае внимательно посмотрите в файле журнала параметры, которые входят в действие создания в том виде, в котором они находятся в данный момент.
Скорее всего, вы увидите, что параметры не являются вложенными так, как вы бы это представляли, поэтому объявление с вложенными атрибутами не работает должным образом