【问题标题】:Bootstrap Alert Messages After Ajax Put RequestAjax Put 请求后的引导警报消息
【发布时间】:2014-08-25 14:53:41
【问题描述】:

我正在尝试在我的表单上单击复选框时启用引导警报。我目前正在通过 ajax 更新记录,这是 rails 中的控制器:

respond_to do |format|
  if assignment.save
    flash[:notice] = "Success"
    format.js {}
  else
    flash[:notice] = "Changed"
    format.js {}
  end
end

然后触发app/views/roles/assign.js.erb 的路径请求,我目前在其中:

$(document).ready(function() {
  debugger;
});

我希望我可以在调试器中玩,但我什至无法进入那里。

我的 ajax 看起来像这样:

$(document).ready(function(){
  function update_user() {
    $.ajax({
      url: '/roles/assign/',
      type: 'PUT',
      data: {'assignment': this.name}
    });
  }
  $(".role-check").on( "click", update_user );
});

记录在 ActiveRecord 中正确保存并相应保存 - 我只是无法在不重新加载页面的情况下显示警报。

这是我的application.html.haml

!!!
%html
  %head
    %title Qautamator
    = stylesheet_link_tag    'application', media: 'all'
    = javascript_include_tag 'application'
    = csrf_meta_tags
  %body
    = render '/layouts/header'
    .container
      .flash_notice
        - flash.each do |name, msg|
          %div{:class => "alert alert-#{flash_level(name)}"}
            %button.close{"data-dismiss" => "alert", :type => "button"}
              %span{"aria-hidden" => "true"} ×
              %span.sr-only Close
            = msg
      = yield

【问题讨论】:

    标签: jquery ruby-on-rails ajax twitter-bootstrap


    【解决方案1】:

    您可以使用变量并将其用于 Flash 消息。

    在您的控制器中

    respond_to do |format|
      if assignment.save
        flash[:notice] = "Success"
        @status= "Success"
        format.js {}
      else
        flash[:notice] = "Changed"
        @status= "Changed"
        format.js {}
      end
    end
    

    在 application.html.haml 中添加这个

    .text-success.profile_image_added.alert.alert-success.text-center
    

    将此添加到 app/views/roles/assign.js.erb

    #####no need->$(document).ready(function() {
    $(".profile_image_added').html("<%= @status %>"):
    #####no need->    });
    

    【讨论】:

    • 将课程添加到application.html.haml?然后 jquery 进入assign.js.erb?
    • @Anthony...我已经更新了我的答案..请看看
    【解决方案2】:

    我不是 100% 我知道您在寻找什么,但您不能在您的 ajax 请求中添加一个显示您的消息的 success 处理程序吗?

    $(document).ready(function(){
      function update_user() {
        $.ajax({
          url: '/roles/assign/',
          type: 'PUT',
          data: {'assignment': this.name},
          success:  function (response) {
            alert(response); //or whatever method of displaying to user
          }
        });
      }
      $(".role-check").on( "click", update_user );
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2018-10-24
      • 2022-08-06
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      相关资源
      最近更新 更多