如果最初隐藏表单,则Rails表单验证不起作用

时间:2013-05-08 19:05:44

标签: ruby-on-rails forms validation hidden

我对rails表单验证有一个奇怪的问题。目前,如果表单在页面加载时可见,则验证工作正常,但如果表单最初隐藏并在用户与页面交互时显示,则不会发生任何事情。

模型

class PushNotification < ActiveRecord::Base
  belongs_to :application, foreign_key: :appId, primary_key: :appid

  validates :message, :presence => true, :length => { maximum: 75 }
  validates :max_message_frequency, :presence => true, :numericality => {:only_integer => true, :greater_than => 0}
  validates :appId, :presence => true
end

Html表格

<div id="push-message-tab" class="tab-section">
    <%= form_for(PushNotification.new,
                     url: messaging_messaging_cohort_create_push_path(@application, @cohort),
                     remote: true, validate: true,
                     html: {
                             id: :push_notification_create_form,
                             class: 'new_push_notification_create ' + (@cohort.new_record? ? 'default-segment' : ''),
                             autocomplete: "off"
                     }) do |f| %>


            <div class="push-form-component-header">
              <%= f.label :message, 'Message' %>
              <span id="message-char-counter-wrapper"><b id="char-counter">75</b> characters left</span>
            </div>
            <div class="actions">
              <%= f.submit "Save", id:'submit-push', class: 'with-spinner', data: {waiting_text: "Saving"} %>
            </div>
    <% end %>
</div>

如果在页面加载rails表格时可以看到push-message-tab元素,那么验证效果很好,但是当我指定style =&#34; display:none&#34;并动态切换可见性选项。表格将在不进行任何验证的情况下发送。

我正在使用带有ruby 1.9.2的rails 3.1

感谢您的支持

1 个答案:

答案 0 :(得分:4)

您似乎正在使用 client_side_validations gem。

基于他们的文档(https://github.com/bcardarella/client_side_validations)并假设您正在讨论客户端验证,我建议您在javascript中尝试这样的事情:

$('#your_form').resetClientSideValidations();

将表单设置为正在显示之后。