有条件地强制客户端验证某个属性

时间:2013-02-25 08:38:38

标签: ruby-on-rails-3 simple-form client-side-validation

我正在使用此客户端验证库:https://github.com/bcardarella/client_side_validations以及简单表单在rails 3.2.12中呈现表单。

我有一个包含两个属性cancelled:boolcancelled_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 %>

关于如何使这项工作的任何想法?

0 个答案:

没有答案