我正在使用bootstrap-sass
宝石。我有一个验证,需要选择一个选择框。
这是选择框:
验证指定必须进行选择(但它include_blank
,以便选择框开始为空)。在验证失败后,它应该是什么样子:
Rails应该创建一个包含输入标签的div,并选择包含类field_with_errors
的框。但是,无论出于何种原因:rails不会使用这些选择框执行此操作。它适用于我的表单的文本框,但不是选择框。
我可以使用field_with_errors
类手动添加div包装器,它可以正常工作。所以看起来问题是rails只是没有用该类创建div包装器。
以下是表格的相关部分:
<div class= 'row'>
<div class="form-group col-sm-4">
<%= f.label :foo_id, class:'control-label' do %>
<i class="fa fa-asterisk label_required"></i>
Expense Type
<% end %>
<%= f.collection_select :foo_id, Foo.all, :id, :description, {include_blank: true}, class: 'form-control' %>
</div>
</div>
问题:我怎样才能使验证失败时,rails会将带有field_with_errors
类的div包装器添加到我的无效collection_select
字段中?
答案 0 :(得分:2)
问题在于我如何命名validation
。假设表单适用于bar
模型,我在collection_select
上有foo
:
#models/bar.rb
class Bar < ApplicationRecord
belongs_to :foo
validates :foo_id, presence: true
end
我以前有这样的验证:
validates :foo, presence: true
验证foo
而不是正确验证foo_id
使其正确失败并显示错误消息,但rails无法使用field_with_errors
添加div包装器。通过验证foo_id
它正确验证,显示错误消息,并添加div包装。