-1

ここで立ち往生した 助けが必要 Ruby on rails ログイン用のポップアップが1つあります jqueryを使用して「サインイン」リンクをクリックすると表示されます データベースからユーザーが入力したユーザー名とパスワードを検証したい ログインポップアップは部分的なページサインですin.html.erb 任意のソリューション。お願いします

4

2 に答える 2

0

使用している検証フレームワークによって異なります。

重要なのは、サーバーが応答したらダイアログを閉じないようにすることです。

(非推奨) JavaScript 検証フレームワークを使用していない場合は、「フォーム」を「リモート フォーム」にして送信し、検証が失敗した場合はエラー メッセージを表示する必要があります。

(私の経験)RSV(本当に単純な検証)などのJavaScript検証フレームワークを使用している場合は、検証ルールを定義するだけで、2つのajaxメソッドを実装します。1つはフォームの検証に使用され、もう1つはフォームの処理に使用されるコールバック関数ですリモートからの応答を取得し、ダイアログに表示します。

とにかく、ダイアログのエラー メッセージの処理は、通常のページのエラー メッセージの処理よりも簡単ではありません。とにかく、あなたが私の考えを理解してくれることを願っています。

于 2012-04-19T06:30:18.817 に答える
0

これは、レンダリングして検証したログイン部分です。

   <div class="clost_holder"> <%= link_to image_tag("/assets/close-new.png"), "javascript:;", :onclick => "close_popup()" %>

</div>

<%= form_for(@user, :as => @user, :url => session_path(@user), :html => {:id => 'sign_in_form', :onsubmit => "return false;"}) do |f| %>
    <div class="login_input_holder mtop20 flt">
      <label>Email</label>

      <p><%= link_to 'dont have an account ?', :controller => 'devise/registrations', :action => 'new' %></p>
      <%= f.email_field :email %>
    </div>
    <div class="login_input_holder mtop10 flt">
      <label>Password</label>
      <%= f.password_field :password %>
    </div>
    <div class="fogot_password "><%= link_to 'forgot password ?', :controller => 'devise/passwords', :action => 'new' %></div>
    <div class="login_btn frt"><input type="submit" value="signin" id='sign_in_btn'></div>


<% end %>

そしてそれを検証します。ただし、jquery.validate および jquery.form ファイルも追加する必要があります。

   <script type="text/javascript">


     $("#sign_in_btn").click(function() {

      if (!jQuery("#sign_in_form").valid()) {

          return false;

      }
    else {

        var container = $("#home1_content");

        $("#sign_in_form").submit(function() {

            $(this).unbind('submit').ajaxSubmit({

                success: function(data) {

                    container.html(data);

                     window.location.reload();

                }
            })



        });

    }
});


$(document).ready(function() {
    $("#sign_in_form").validate({
        rules:{
            "user[email]":
            {
                required: true ,
                email: true
            },

            "user[password]":
            {
                required: true
            },
            messages: {
                "user[email]": "This field is required",
                "user[password]": "This field is required"
            }
        }
    });
});


     </script>
于 2012-04-19T06:42:32.043 に答える