RailsフォームヘルパーでTwitter Bootstrapモーダルウィンドウを使用し、フォーム検証エラーメッセージを表示することについて質問しています。Rails 3.2 で Twitter Bootstrap 2.0 を使用しています。
Twitter Bootstrap モーダル ウィンドウ内にフォームがあります。ページには、モーダル ウィンドウを開いてフォームを表示するためのボタンがあります。フォームがエラーで送信された場合を除いて、すべて問題ありません。ページが表示され、フォームが (最初は表示されていない) モーダル ウィンドウ内にあるため、エラー メッセージは表示されません。
jQuery を使用して、フォームに Rails エラー メッセージが含まれているかどうかをテストし、「display: none;」をオーバーライドする必要があります。ページがレンダリングされるときのスタイル (または表示するモーダル ウィンドウを切り替えます)。
次のコードを assets/javascripts/application.js ファイルに追加しようとしましたが、うまくいきません:
$('document').ready(function() {
if ($('#error_explanation').length > 0) {
$("#request_invite").css("display", "block");
}
})
また:
$('document').ready(function() {
if ($('#error_explanation').length > 0) {
$("#request_invite").modal('toggle');
}
})
エラー メッセージが表示されているときに、モーダル ウィンドウを表示したり、開いたりするにはどうすればよいですか?
以下は、Twitter Bootstrap モーダル ウィンドウ (Haml) 内にフォームを表示するコードです。
#request-invite.modal{:style => "display: none;"}
= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
.modal-header
%a.close{"data-dismiss" => "modal"} ×
%h3 Request Invitation
.modal-body
- if @user.errors.any?
#error_explanation
%ul
- @user.errors.full_messages.each do |msg|
%li= msg
%p
= f.label :email
%br/
= f.email_field :email
.modal-footer
= f.submit "Request Invitation", :class => "btn.btn-success"
%a.btn{"data-dismiss" => "modal", :href => "#"} Close
#romance-copy{:style => "text-align: center; margin-top: 100px"}
%h2 Want in?
#call-to-action{:style => "text-align: center; margin-top: 100px"}
%a.btn.btn-primary.btn-large{"data-toggle" => "modal", :href => "#request-invite"} Request invite