我在HAML视图中有一个if语句,检查是否有flash[:notice]
,如果是,我想要一个javascript警告框,弹出其中的通知消息。这可能吗?
答案 0 :(得分: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消息分配给Javascript变量,已附加到<head>
代码中的<script>
。)
答案 1 :(得分:0)
它有点笨拙,但您可以在HAML的javascript过滤器中使用#{}
,如下所示:
- unless flash[:notice].empty?
:javascript
alert("#{flash[:notice]}");