0

我有这个表格

= simple_form_for @category.fields.build, url: category_fields_path(@category) do |f|
    = f.input :kind, collection: Field::FIELD_TYPES, prompt: "Choose field type"
    = f.input :description
    = f.submit "Add field"

和这个场模型

class Field < ActiveRecord::Base
  FIELD_TYPES = %w(integer float date string text)

  validates :description, presence: true
  validates :kind, presence: true

  belongs_to :category

end

当我将“描述”字段留空时,不会发送任何请求,并且我会收到“请填写此字段”的通知。这就是我想要的。另一方面,当 description 填写但 kind 没有填写时,仍然会向“create”操作发送请求!没有创建任何字段,但需要再次填写“描述”。在这种情况下不应该有请求。知道如何解决这个问题吗?

4

2 回答 2

0

虽然,我对您的问题没有确切的答案,但您应该从检查 HTML 输出开始。Simple from 依赖HTML5 提供前端验证。所有输入都应具有required属性,以启用验证。也许有一个错误,在这种特殊情况下 simple_form 不输出required属性。

另一件需要考虑的事情是 HTML5,请咨询浏览器支持:http ://caniuse.com/#feat=form-validation 。从理论上讲,您可能正在对表单验证的支持有限的浏览器上进行测试。

如果您发现 simple_from 没有required为您的kind燃料输出,请尝试强制它:

= f.input :kind, collection: Field::FIELD_TYPES, prompt: "Choose field type", required: true
于 2013-11-02T11:55:57.673 回答
0

我在 Simple Form github 的问题主题上得到了答案。总而言之,问题很及时,验证还没有(还没有?)正确使用它,解决方案是替换它,例如:

= f.input :kind, collection: Field::FIELD_TYPES, include_blank: "Choose field type", label: false
于 2013-11-02T12:40:11.480 回答