【发布时间】:2014-10-28 07:10:24
【问题描述】:
我想在保存新的子记录之前捕获父 ID 参数(外键)。
我将这两个设置作为路由文件中的嵌套资源,并且指向新子控制器操作的链接显示正确嵌套的父 ID。
当我为孩子输入数据并单击“创建”时,记录已创建,但我无法捕获父级的 ID。
编辑
我正在使用嵌套集模型将表关联回自身,因此没有 FK 列。因为没有 FK,所以我需要在保存记录之前捕获父 ID,并相应地更新其他记录的 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 路由显示如下:
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]是您访问父 ID 的方式。
标签: ruby-on-rails activerecord nested-routes