当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – 在Parent的节目中创建新的Child

来源:互联网 收集:自由互联 发布时间:2021-06-23
在现有Parent的show视图中,我想有一个表单来创建Children. 我已经想出了如何创建一个Child表单并将其包含在Parent的节目中,而不是如何排除parent_id字段.如何在不使用表单字段的情况下将pa
在现有Parent的show视图中,我想有一个表单来创建Children.

我已经想出了如何创建一个Child表单并将其包含在Parent的节目中,而不是如何排除parent_id字段.如何在不使用表单字段的情况下将parent_id分配给子项?

我认为处理此问题的最佳方法是使用父控制器的成员路由,以便在创建子级时,始终通过路由知道它所属的父级.例如:

# routes.rb
resources :parents do
  member do
    post 'create_child'
  end
end

然后在你看来

# parents/show.html.erb
<%= form_for @child, :url => create_child_parent_path(@parent) do |f| %>
...
<% end %>

最后在你的控制器中

# parents_controller.rb
def create_child
  @parent = Parent.find(params[:id])
  @child = @parent.children.build(params[:child])
  if @child.save
    @child = Child.new
  end
  render :action => :show
end

这里的关键是,即使表单不包含有关父项的信息,当您在关联上使用构建方法时,默认情况下会分配parent_id.

网友评论