Ruby on rails 是否在表单中保存您的ID,而不使用隐藏字段?

Ruby on rails 是否在表单中保存您的ID,而不使用隐藏字段?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在努力找出一种最好的方法来保存一个记录ID,同时创建一个新的子记录。我目前正在使用一个隐藏字段来保留父项的ID 您能想出一种更好的方法来保存家长的ID(不使用隐藏字段)? 这里是我的路线片段 资源:儿童 资源:家长有 资源:儿童 结束 这是我的父母模型 类父级@parent.id%> 然后将其传递给create(POST)方法 def创建 @kid=kid.new(params[:kid]) @parent=parent.find(@kid.parent\u id) @孩子,救命 #等等

我正在努力找出一种最好的方法来保存一个记录ID,同时创建一个新的子记录。我目前正在使用一个隐藏字段来保留父项的ID

您能想出一种更好的方法来保存家长的ID(不使用隐藏字段)?

这里是我的路线片段

资源:儿童
资源:家长有
资源:儿童
结束
这是我的父母模型

类父级
这是我的孩子模型

class-Kidtrue
结束
这是我在创造一个新孩子时的观点


%=f.hidden_字段:parent_id,:value=>@parent.id%>
然后将其传递给create(POST)方法

def创建
@kid=kid.new(params[:kid])
@parent=parent.find(@kid.parent\u id)
@孩子,救命
#等等。。。
结束

如果您不想将其作为隐藏字段传入,我建议使用,您可以在URL中保留
parent\u id
,并将
parents/1/kids
作为路径。然后,在
KidsController
中,您需要加载父资源并将其与
Kid
关联。如果您不想将其作为隐藏字段传入,我建议使用,您可以将
父id
保留在URL中,并将
父/1/子
作为路径。然后,在
KidsController
中,如果删除routes示例的第一行,则需要加载父资源并将其与
Kid
关联,以便

resources :parents do
  resources :kids
end
现在你不必在没有父母的情况下给孩子们打电话了。您的路线匹配行为类似于

/parents/:parent_id/kids
现在,在你的孩子控制器里,你可以

def create
  @parent = Parent.find(params[:parent_id])
  @parent.kids.create( params[:kid] )
  #...
end

当您通过has_many集合创建新孩子时,如果您将路线示例的第一行删除为

resources :parents do
  resources :kids
end
现在你不必在没有父母的情况下给孩子们打电话了。您的路线匹配行为类似于

/parents/:parent_id/kids
现在,在你的孩子控制器里,你可以

def create
  @parent = Parent.find(params[:parent_id])
  @parent.kids.create( params[:kid] )
  #...
end

当您通过has_many集合创建它时,新孩子会自动分配其父对象。

是的,嵌套资源是一种好方法,但在您的情况下,您也可以使用“field_for”。

是的,嵌套资源是一种好方法,但在您的情况下,您也可以使用“field_for”。

有趣的是,我将探讨这个有趣的问题,我会调查的