javascript
  • ruby-on-rails
  • 2013-08-27 60 views 0 likes 
    0

    我create.js.erb:的Javascript删除变量值

    var flashSuccess = "<%=flash[:add_comment_success]%>"; 
    if (flashSuccess){ 
        $("#flash_messages").html("<div class='messages_notify'><div id='message-add_comment_success'><p class='message_content'></p></div></div>"); 
    noty_ajax(); 
    flashSuccess = undefined 
    } 
    
    
    
    var flashError = "<%=flash[:add_comment_error]%>"; 
    if (flashError){ 
        $("#flash_messages").html("<div class='messages_notify'><div id='message-add_comment_error'><p class='message_content'></p></div></div>"); 
    noty_ajax(); 
    flashError = undefined 
    } 
    

    我app.js文件:

    function noty_ajax(){ 
    $(".messages_notify #message-add_comment_success").each(function(){ 
         generate('success', 'Coment added.'); 
        }).remove(); 
    
        $(".messages_notify #message-add_comment_error").each(function(){ 
         generate('error', 'Comment Error'); 
        }).remove(); 
    } 
    

    什么是一个问题。当我点击生成错误消息的按钮,然后单击生成成功消息的按钮 - 当它生成成功消息时,它也会生成错误消息 - 所以有两条消息。我尝试删除,因为您可以在执行后看到“flashError”和“flasSuccess”,但它不会改变任何内容。你能看到第二条消息是在哪里生成的,我能做些什么来删除它?

    ANSWER

    flashError和flashSuccess总是正确的,不知道为什么,在第二个请求他们两个wasnt空。我生成两个型动物js文件,从控制器渲染解决此问题:

    if @comment.save 
    return respond_to do |format| 
    
        flash[:add_comment_success] = "success" 
        format.html {redirect_to :back} 
        format.js {render 'comments/success'} /// and error.js.erb for error message 
        end 
    else 
        return respond_to do |format| 
    
        flash[:add_comment_error] = "error" 
        format.html {redirect_to :back} 
        format.js {render 'comments/error'} /// and error.js.erb for error message 
        end 
    end 
    

    现在有在生成的JS没有两个变量,因此它的工作原理。

    +0

    打开控制台,看看它做了什么'Boolean('random string value')'的确,每次都是_true_ –

    +0

    你的flashError或flashSuccess是字符串,所以它们总是正确的,除非字符串为空 - '!!' ''是'false' – jcubic

    回答

    1

    您的flashSuccessflashError不是布尔值,您的create.js中的if条件将始终为true。
    因此,每次都会显示这两条消息。

    +0

    谢谢。我想我解决它与呈现控制器中的两个不同的文件 - 后编辑。 – Wordica

    相关问题