0

我在 HAML 视图中有一个 if 语句,用于检查是否有flash[:notice], if 是我希望弹出一个带有通知消息的 javascript 警报框。这可能吗?

4

2 回答 2

1

为什么要把这个放在你的视野里?您可以在您的application.js (或您的管道中任何其他包含的 JS 文件)中使用 Javascript 来完成此操作。您确实应该避免将 Javascript 直接放入您的视图中(这通常是不好的做法)。以下 HAML

#flash= flash[:notice]

会产生 HTML 之类的

<div id="flash">Your notice message here</div>

在你的application.js你可以做这样的事情

$(function() {
  if ($('#flash').get(0)) {    // check if the div exists
    alert($('#flash').text()); // throw an alert() with the div's text
  }
});

也许这可以很好地满足您的目的,但是如果您根本不希望 Flash 消息文本出现在 HTML 中(即,将 Flash 消息分配给附加<head><script>标签。)

于 2013-02-24T21:06:26.133 回答
0

这有点笨拙,但您可以#{}在 HAML 中的 javascript 过滤器内部使用,如下所示:

- unless flash[:notice].empty?
  :javascript
    alert("#{flash[:notice]}");
于 2013-02-24T21:07:45.263 回答