0

我正在使用 Rails、Devise gem、jQuery 验证插件和 Bootstrap。

我可以打电话给 $('#congrats').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 .. flash 系统就是为了处理这种情况。闪存中设置的值将仅针对一次重定向保留。如果用户要刷新页面,flash 值将自动取消设置,用户将不会再次看到该消息。

  • 您的用户提交表单。
  • 您在后端的控制器设置了指示成功的闪存消息。它重定向到适当的页面。
  • 您在重定向页面上的查看代码会读取 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

你可以做的是:

  • 在用户提交表单后设置logged_in_successfully会话变量true
  • 在重定向到页面的布局中,检查该变量是否设置为 true
    • 如果是这样,包括理想情况下部分的恭喜模态,否则什么也不做。
  • 在重定向到操作中,取消设置变量logged_in_successfully,或将其设置为false
于 2012-07-13T09:46:45.420 回答