Rails锁定屏幕效果Javascript

Rails Locked Screen effect Javascript

本文关键字:Javascript 屏幕 锁定 Rails      更新时间:2023-12-01

最近得到了一份Rails开发人员的新工作,以前从未使用过这种语言,这是一个很大的飞跃。

我正在为网站设计一个锁定屏幕效果,可以点击一个链接,该链接会清空网页,并要求用户再次输入密码以删除覆盖。覆盖是一个jQuery模式,如下所示:

$().ready( function() {
    $('.blackoutwindow').jqm({
        modal: true,
        trigger: '.blackout',
        overlay: 100
    });
    if (boset) {
        $('.blackoutwindow').jqmShow();
    }
});

单击id为"blackout"的链接时,会出现窗口。JS变量boset在我的视图中是从Rails会话变量中设置的,该变量确定用户是否屏蔽了屏幕(以便在刷新时保持屏蔽等)<%= javascript_tag "var boset = #{session[:blanked]} "%>

在modaldiv中是我的Rails密码表单:

<%= form_tag passcheck_path, :id => "passcheck", :remote => true do -%>
<%= hidden_field_tag :email, current_user.email %>
<ul>
    <li><%= password_field_tag 'password', nil, { :size => 30, :maxlength => 80, :class => :required } %></li>
    <li><%= submit_tag 'Submit' %></li>
    <li><span class="ajaxmessage">&nbsp;</span></li>
</ul>
<% end -%>

这(我真的不明白)将密码发送到我的session_controller.rb中一个名为passcheck的操作,这是一种AJAX风格,用于验证密码。

既然我已经解释了我目前的位置,如果密码正确,我现在如何关闭jQuery模态,如果密码不正确,我如何更新span.ajaxmessage,以及当有人最初点击"空白屏幕"链接时,如何设置会话变量?

希望我说得足够清楚,任何问题都要回答。。

除了这个剩余的问题外,大部分都能正常工作。

在我的控制器中,我输入:

def passcheck  
  if request.get? # This is for when the link is clicked
    session[:blanked] = true 
  else # This is when the password form is submitted
    if user = User.authenticate( params[:email], params[:password] )
      @valid = true
      session[:blanked] = false
    end
  end 
end

然后我创建了一个passcheck.js.erb,这是我希望在提交表单时执行的javascript:

<% if @valid %>
$('.blackoutwindow').jqmHide();
$('.ajaxmessage').html('&nbsp;');
$("#passcheck input[name=password]").val("");
<% else %> $('.ajaxmessage').html('<p style="color: #000">Incorrect password, please try again.</p>');