Ruby on rails 是否在表单中保存您的ID,而不使用隐藏字段?
我正在努力找出一种最好的方法来保存一个记录ID,同时创建一个新的子记录。我目前正在使用一个隐藏字段来保留父项的ID 您能想出一种更好的方法来保存家长的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) @孩子,救命 #等等
资源:儿童
资源:家长有
资源:儿童
结束
这是我的父母模型
类父级
这是我的孩子模型
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”。有趣的是,我将探讨这个有趣的问题,我会调查的