7

我在我的 sinatra 应用程序中使用内联 haml 模板。我有一个@@layout这样的部分:

#message
  - if flash[:notice]
    %section.notice= flash[:notice]
  - if flash[:error]
    %section.error= flash[:error]

当我使用flash[:notice]=“你好!” 在一条路线中并单击一个链接,下一页在#messagediv 中愉快地说“你好”。太棒了。

所以这就是问题所在,我正在使用 right.js 为我的应用程序添加一些 ajax 功能,rack-flash 的行为充其量是不一致的。

大多数时候,你点击一个.linkey链接#content( ...下次您单击链接时...大约 80% 的时间,其余时间什么也不显示。

这是我的js:

"a.linkey".onClick(function(event) {
   event.stop();
   $('content').load( [ "/", this.get('id'), ].join("") );
   $('message').load( '/message' );
});

我想要的是这样的:

1) 点击链接

2)链接目标(/foo)被加载到#content

3)#message重新加载消息(来自 route flash[:notice]= "bar")

4)#content现在显示/foo& #message显示“栏”

我也试过这个,$('message').load( '/message' );但是要么什么都不加载,要么用“/message”(一个字符串而不是内容)#message填充。#message

我想知道这里发生了什么?是 rack-flash 还是 right.js?或者是其他东西?如果需要,我可以提供更多代码,但实际上除了基本框架之外没有更多代码,因为我刚刚开始这个项目。

4

1 回答 1

1

对于通过控制器操作运行的 AJAX 请求,您需要使用flash.now以便 flash 消息可用于当前请求。所以在你的情况下,flash.now[:notice] = "bar".

于 2012-03-18T04:53:37.883 回答