2

我正在使用这个客户端验证库: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 %>

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

4

0 回答 0