0

最近得到了一份新工作,作为一名 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]} "%>

模态 div 里面是我的 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,以及当有人最初点击时设置会话变量“空白屏幕”链接?

希望我足够清楚,有任何问题,开火吧..

4

1 回答 1

1

得到它的工作,主要是,除了这个剩余的问题

在我的控制器中,我放了:

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>');
于 2012-07-20T14:15:01.670 回答