rails:为给定的parent_id创建子项

时间:2016-12-27 23:19:13

标签: ruby-on-rails-3 parent-child

我需要你的帮助来建立亲子关系。

我有一个问题,让孩子的创造工作正常。

这是模型:

class Nccheklist < ActiveRecord::Base
  has_many :children, class_name: "Nccheklist", foreign_key: "parent_id"
  belongs_to :parent, class_name: "Nccheklist"

  def has_parent?
    parent.present?
  end

  def has_children?
    children.exists?
  end


end

控制器:

def create
    @nccheklist = Nccheklist.new(nccheklist_params)
    if @nccheklist.save
      redirect_to nccheklists_url, notice: 'Nccheklist was successfully created.'
    else
      render :new
    end
  end

和视图:

<%= form_for(@nccheklist) do |f| %>
  <% if @nccheklist.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@nccheklist.errors.count, "error") %> prohibited this nccheklist from being saved:</h2>

      <ul>
      <% @nccheklist.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
<div>
  <%= f.collection_select(:parent_id, @rootcat, :id, :name) %>
</div>
<br/><br/>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

当我提交表单时,parent_id在数据库上总是等于null!

请有人帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

将以下内容添加到类定义

accepts_nested_attributes_for :children, allow_destroy: true