Rails中的flash消息在哪里?

时间:2012-04-10 17:43:24

标签: jquery ruby-on-rails ruby ruby-on-rails-3

好的,我有一个删除用户按钮

  <button id="delete" data="<%= user_path(@user) %>">Delete User</button>

使用jquery ui

   $("#delete").button();

我想点击删除用户,所以我有

   $("#delete").click(function(){
      if(confirm("Are you sure?")){
          var url = $(this).attr('data');
          $.post(url, {_method:'delete'}, null, "script");
          document.location = '<%= users_path %>';
          return false;
      } else {
          return false;
      }
   });

一切都很好但是当页面刷新时,我的摧毁行动没有闪光

def destroy
  User.find(params[:id]).destroy
  flash[:success] = "User deleted."
  redirect_to users_path
end

有关如何解决此问题或重组我所做的任何建议。我不能只使用link_to或button_to来进行样式设计

1 个答案:

答案 0 :(得分:3)

Flash数据仅适用于以下请求。它正在被你的AJAX回发“吃掉”。

当您post通过$.post时,您实际上是在发出两个请求; delete请求在重定向后发出,并向get发出users_path个请求。 请求会看到闪存数据。然后,当您将document.location设置为users_path时,不再需要渲染任何Flash数据。

你绝对不应该通过手动AJAX来处理这个问题。允许您像常规链接一样点击链接,并允许Rails的UJS处理回发/确认对话框。这应该不会影响你设置链接样式的能力,除非你做错了。