javascript - if else 语句似乎同时运行

标签 javascript ruby-on-rails ruby if-statement erb

在我的 js erb 文件中,我的两条 Flash 消息都显示了,而实际上只有一条应该显示。 ajax 运行良好,我的响应是它应该的。但是,由于某种原因,我的 Flash 消息会同时显示 if 和 else 语句中的消息。我在 if 语句之前放置了一个调试器来测试我的响应,它的计算结果应该为 true。

$.ajax({
            url: '/purchases/options',
            method: 'post',
            dataType: 'json',
            data: data
            }).done(function(response){
                if(response.duplicate === "true"){
                    <% flash.now[:alert]= 'This Addressi Is Already In Your Cart Or In Your Report Section.' %>
                }
                else{

                    <% flash.now[:notice]= 'Searchs result is added to your cart' %>
                }
           });
    $("<%= j render(:partial => 'layouts/messages') %>").insertBefore('form')[0];

最佳答案

由于 ERB 在发送到浏览器之前总是进行插值,因此您的浏览器基本上会看到以下内容:

if(response.duplicate === "true") {
} else {
}

你的服务器将会看到这个:

flash.now[:alert]= 'This Addressi Is Already In Your Cart Or In Your Report Section.'
flash.now[:notice]= 'Searchs result is added to your cart'

这基本上意味着您的服务器将始终运行这些flash行中的两者

您需要做的就是在没有 ERB 帮助的情况下将所有内容移至 JS 文件中,并在那里手动设置 Flash 文本。

例如,假设您的页面上某处有以下标记,它将作为 Flash 文本的“占位符”:

<div id="flash"></div>

然后在 JavaScript 中,您只需手动设置文本即可:

$("<%= j render(:partial => 'layouts/messages') %>").insertBefore('form')[0];

$.ajax({
  url: '/purchases/options',
  method: 'post',
  dataType: 'json',
  data: data
}).done(function(response){
  if (response.duplicate === "true") {
    $("#flash").text("This Addressi Is Already In Your Cart Or In Your Report Section.");
    $("#flash").addClass("alert");
  } else{
    $("#flash").text("Searchs result is added to your cart");
    $("#flash").addClass("notice");
  }
});

关于javascript - if else 语句似乎同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615372/

相关文章:

javascript - if..else 与 if(){return}

ruby-on-rails - "validate"和 "validates"之间有什么区别?

ruby-on-rails - 如何列出一个类的所有方法(不是扩展和包含的方法)

ruby - 将时间与毫秒进行比较

javascript - 如何访问 csv 文件中这样嵌套的数据?

javascript - 将命令行输入转换为 Node Fluent ffmpeg

ruby-on-rails - devise_for :users error in Rails 4

ruby-on-rails - Ruby on Rails 和预加载模型关联(包含或不包含)?

ruby - 是否可以从 Heroku 的私有(private) gitlab 主机安装 gem

javascript - 如何获取无效 HTML 日期输入的值?