作为一个新手,我一直在寻找最佳实践来创建一个子项目时显示父项目。我找到了很多解释,而不是不完整,对我来说也不明显。有人可以描述最佳实践的完整实施吗? 我创建了parent_item
和child_item
型号,包括has_many
和belongs_to
声明。 我可以在parent_item
“show”视图中列出链接child_items
(手动创建)。从父项目创建子项目的最佳方法是什么?
现在我想创建一个<%= link_to 'New Child Item', new_child_item_path %>
作为URL中的参数传递父母的ID。 现在走哪条路?
- 修改路由?
- 添加参数到
child_item.new
控制器? - 在child_item表单中有隐藏字段来存储
parent_item.id
值?
我会很高兴拥抱最好的解释!
谢谢!
弗雷德
您好,感谢您的帮助。当我发现这个嵌套资源功能时,我尝试成功应用它:当从父项创建子项时,表单将与传递给它的parent_id一起显示。
这里是我的代码更新:(游乐场父,景观是孩子)
ROUTES
resources :playgrounds do
resources :landscapes, :only=>[:new, :create]
end
SHOW(从操场父)
<%= link_to 'Add landscape', new_playground_landscape_path(@playground) %>
LANDSCAPE_CONTROLLER
def new
@landscape = Landscape.new
@landscape.playground_id = params[:playground_id]
FORM(从横向) - (?我说得对)我没必要提及@playground因为我只有景观领域以这种形式
<%= form_for [@landscape] do |f| %>
...
<div class="field">
<%= f.label :playground_id %><br />
<%=f.text_field :playground_id%>
</div>
大,它的工作原理精细。但playground_id字段不应出现在表单中,并且在landscape.rb模型中被定义为不可访问的属性。 这些要求是否兼容? 我应该隐藏该字段,并让它可访问吗?
感谢您的帮助!
Fred