Ajax Put Request之后的Bootstrap警报消息

时间:2014-08-25 14:53:42

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

我正在尝试在我的表单上单击复选框时启用引导警报。我目前正在通过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

2 个答案:

答案 0 :(得分: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->    });

答案 1 :(得分:0)

我不是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 );
});