表单输入要求字段不为空

时间:2019-06-12 17:03:44

标签: ruby-on-rails ruby-on-rails-5

我将我的应用程序从Rails 4.2转移到5.2,在此过渡过程中,我偶然发现了一个不确定的错误,我不确定该如何解决。这段代码是为我编写的,因为当时我不知道要完成它。我的桌子是为人而设的,桌子上有老板和非老板,那些非老板必须能够与老板保持联系。

在新开发区中,当我提交要更新“ Boss”必须为null的人的表单时,将得到以下信息: 1 error prohibited this person from being saved: Boss must exist

控制器:

def edit
    @person = Person.find(params[:id])
end

型号:

belongs_to :boss, class_name: 'Person'
has_many :subordinates, class_name: 'Person', foreign_key: 'boss_id'

validates_presence_of :user_name, :position, :fname, :lname 

模式:

t.integer "boss_id"
t.index ["boss_id"], name: "index_people_on_boss_id"

表格:

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

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

    <fieldset>
        ...many fields...
    </fieldset>
    <fieldset>
        <label>
            Boss
            <%= f.select :boss_id, [[" ", :null], [name, 1], [name, 2], ...etc ] %>
        </label>
    </fieldset>
<%= f.submit %>
<% end %>

我不确定在哪里可以找到答案。

1 个答案:

答案 0 :(得分:2)

属于,要求在创建时默认存在父对象。如果您将创建一个没有父对象的子对象,则会收到[“必须存在”]错误消息,因此您的对象无效。

如果您想要这种行为,则需要通过以下选项:

#person.rb
belongs_to :boss, class_name: 'Person', optional: true