我正在使用此客户端验证库: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(旁边有'required star')和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中产生一个空的'validation'数组,因此无论如何都可以提交。它也无法在我需要的字段中渲染字段。
我还尝试在呈现表单之前手动将'canceled'字段设置为true,这也无法正常工作。
<% model.cancelled = true %>
<% simple_form_for @model, validate: true do |f| %>
...
<% end %>
关于如何使这项工作的任何想法?