我对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
感谢您的支持
答案 0 :(得分:4)
您似乎正在使用 client_side_validations gem。
基于他们的文档(https://github.com/bcardarella/client_side_validations)并假设您正在讨论客户端验证,我建议您在javascript中尝试这样的事情:
$('#your_form').resetClientSideValidations();
将表单设置为正在显示之后。