Я хотел бы зафиксировать параметр родительского идентификатора (внешний ключ) перед сохранением новой дочерней записи.
У меня есть две настройки как вложенные ресурсы в файле маршрутов, и ссылка на новое действие дочернего контроллера показывает правильно вложенный родительский идентификатор.
Когда я ввожу данные для ребенка и нажимаю «Создать», запись создается, однако я не могу зафиксировать идентификатор родителя.
Редактировать
Я использую модель вложенных наборов, чтобы связать таблицу с самой собой, чтобы столбца FK не было. Поскольку нет FK, мне нужно захватить родительский идентификатор перед сохранением записи и соответствующим образом обновить поля lft и rgt другой записи.
http://www.ibase.ru/devinfo/DBMSTrees/sqltrees.html
Маршруты:
Rails.application.routes.draw do
resources :regions do
resources :regions
end
End
Новая форма
Список регионов включает следующую ссылку для создания нового дочернего региона:
stackoverflow не позволит мне опубликовать поле формы, однако я думаю, что моя проблема заключается в том, что форма публикуется в @region, который находится на скаффолде до того, как я вложил ресурсы.
rake route отображает следующее:
Prefix Verb URI Pattern Controller#Action
region_regions GET /regions/:region_id/regions(.:format) regions#index
POST /regions/:region_id/regions(.:format) regions#create
new_region_region GET /regions/:region_id/regions/new(.:format) regions#new
edit_region_region GET /regions/:region_id/regions/:id/edit(.:format) regions#edit
region_region GET /regions/:region_id/regions/:id(.:format) regions#show
PATCH /regions/:region_id/regions/:id(.:format) regions#update
PUT /regions/:region_id/regions/:id(.:format) regions#update
DELETE /regions/:region_id/regions/:id(.:format) regions#destroy
regions GET /regions(.:format) regions#index
POST /regions(.:format) regions#create
new_region GET /regions/new(.:format) regions#new
edit_region GET /regions/:id/edit(.:format) regions#edit
region GET /regions/:id(.:format) regions#show
PATCH /regions/:id(.:format) regions#update
PUT /regions/:id(.:format) regions#update
DELETE /regions/:id(.:format) regions#destroy
<%= form_for(@region) do |f| %>
...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
@parent_id = params[:region_id]
— это то, как вы получаете доступ к родительскому идентификатору. - person mohameddiaa27   schedule 29.10.2014