我有这个表格
= 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'字段留空时,没有请求发送,我收到通知'请填写此字段'。这就是我想要的。另一方面,当填写说明但是没有填写时,仍然会向“创建”操作发送请求!不会创建任何字段,但需要再次填写“描述”。在这种情况下应该没有要求。任何想法如何解决这个问题?
答案 0 :(得分:0)
虽然,我对你的问题没有确切的答案,但你应该从检查HTML输出开始。很简单,依赖于HTML5 to provide front-end validation。所有输入都应具有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
答案 1 :(得分:0)
我在Simple Form github的问题主题here得到了答案。总结一下,问题是提示,验证不是(还是?)正确使用它,解决方案是替换它,例如像这样:
= f.input :kind, collection: Field::FIELD_TYPES, include_blank: "Choose field type", label: false