我正在使用这个客户端验证库:https ://github.com/bcardarella/client_side_validations和简单的表单一起在 Rails 3.2.12 中呈现表单。
我有一个具有两个属性的模型,cancelled:bool
并且cancelled_reason:string
. 什么时候cancelled
设置我想强制设置原因,我通过一个简单的验证来做到这一点:
validates :cancelled_reason, presence: true, if: "cancelled"
然后我有一个表单,其中包含一个隐藏的输入cancelled = true
和一个文本字段cancelled_reason
。我想要做的是a)呈现这个字段,就好像它有存在一样:true(旁边有'必需的星')和b)使客户端验证对该字段正常工作。
根据客户端验证的文档,我尝试了几件事来实现这一点。
<%= f.input :cancelled_reason, validate: true do %>
<%= f.input :cancelled_reason, validate: { presence: true } do %>
<%= f.input :cancelled_reason do %>
<% f.text_field :cancelled_reason, validate: { presence: true } %>
<% end %>
所有这些仍然会在表单的 javascript 中产生一个空的“验证”数组,因此无论如何都可以提交它。由于我需要字段,它也无法渲染字段。
我还尝试在呈现表单之前手动将“已取消”字段设置为 true,这也无法正常工作。
<% model.cancelled = true %>
<% simple_form_for @model, validate: true do |f| %>
...
<% end %>
关于如何使这项工作的任何想法?