0

Rails、Devise gem、jQuery 検証プラグイン、および Bootstrap を使用しています。

$('#congrats').show(); を呼び出すことができます。ユーザーが送信すると、ユーザーはサインアップ後に自動的にリダイレクトされるため、閉じています。

また、ページが初めてロードされた場合は呼び出すことができません。はい?

適切なタイミングで show 関数を呼び出すにはどうすればよいですか?

私のHTMLフォーム

     <form accept-charset="UTF-8" action="/users" class="sign_up" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="W0u6CgL+sA/n/Zecikl67zLqkIPePQz01Vg0u3bi2nc=" /></div>
<div class="field2">

  <label for="user_first_name">First name</label>
  <input id="user_first_name" name="user[first_name]" size="30" type="text" /></div>

<div class="field2"><label for="user_last_name">Last name</label>
  <input id="user_last_name" name="user[last_name]" size="30" type="text" /></div>

<div class="field2"><label for="user_email">Email</label>
  <input id="user_email" name="user[email]" size="30" type="email" value="" /></div>

<div class="field2"><label for="user_password">Password</label>
  <input id="user_password" name="user[password]" size="30" type="password" /></div>

<div class="field2"><label for="user_password_confirmation">Re-Type Password</label>
  <input id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password" />

</div>

<div class="login_submit">
  <input class="btn login" name="commit" type="submit" value="Sign up" />
  </div>
</form>  
4

2 に答える 2

1

http://guides.rubyonrails.org/action_controller_overview.html#the-flash .. フラッシュ システムは、そのようなシナリオを処理するためだけに用意されています。フラッシュに設定された値は、1 回のリダイレクトに対してのみ保持されます。ユーザーがページを更新すると、flash 値は自動的に設定解除され、ユーザーにはそのメッセージが再び表示されなくなります。

  • ユーザーがフォームを送信します。
  • バックエンドのコントローラーは、成功を示すフラッシュ メッセージを設定します。適切なページにリダイレクトされます。
  • リダイレクトされたページのビュー コードは、フラッシュ メッセージを読み取り、いくつかの js 変数を設定します。
  • そのビューの js コードは、以前に設定された変数を読み取り、値に応じておめでとうモーダルを表示します。

私はerb構文を覚えていませんが、いくつかの擬似コードを書くことができます:

if flash message["signup_success"] == true, then
   print this text "var showCongrats = true;"
else print this text "var showCongrats = false;"

あなたのjsコードで、

$(function() {
   if (showCongrats) { // show the modal; 
   }
})

erb に変数宣言をページに出力させたいだけです。

于 2012-07-13T09:43:46.517 に答える
0

What you can do is:

  • Setting a logged_in_successfully session variable to true after the user submits the form
  • In the layout of the redirected to page, check if that variable is set to true
    • If so, include the congratz modal that would ideally be in a partial, otherwise do nothing.
  • In the redirected to action, unset the variable logged_in_successfully, or set it to false.
于 2012-07-13T09:46:45.420 に答える