我想在某些条件下在我的html页面中收到一条flash消息。我是Ruby的新手,我不知道如何使这项工作。
这是我的控制器
if @item_point > current_user.points
flash[:alert] = "You don't have enough points to buy this item"
else
end
respond_to do |format|
format.html {redirect_to '/hhr'}
format.js
end
并且在我的脚本中我试图在我的ajax成功函数中得到它..但是我无法得到它..有什么方法可以在我的jquery函数或我的视图中获取此flash消息。 请帮助。 提前谢谢
答案 0 :(得分:1)
请参阅以下代码。它可能会帮助你
#inside your rails controller method
flash[:notice] = "Your Notice content to be displayed"
#rails helper
module ApplicationHelper
def flash_notifications
message = flash[:error] || flash[:notice]
if message
type = flash.keys[0].to_s
javascript_tag %Q{$.notification({ message:"#{message}", type:"#{type}" });}
end
end
end
#rails layout
<%= flash_notifications -%>
#javascript code
(function( $, undefined ) {
$.notification = function(options) {
var opts = $.extend({}, {type: 'notice', time: 3000}, options);
var o = opts;
timeout = setTimeout('$.notification.removebar()', o.time);
var message_span = $('<span />').addClass('jbar-content').html(o.message);
var wrap_bar = $('<div />').addClass('jbar jbar-top').css("cursor", "pointer");
if (o.type == 'error') {
wrap_bar.css({"color": "#D8000C"})
};
wrap_bar.click(function(){
$.notification.removebar()
});
wrap_bar.append(message_span).hide()
.insertBefore($('.container')).fadeIn('fast');
};
var timeout;
$.notification.removebar = function(txt) {
if($('.jbar').length){
clearTimeout(timeout);
$('.jbar').fadeOut('fast',function(){
$(this).remove();
});
}
};
})(jQuery);
答案 1 :(得分:1)
你应该看看这个:
Jquery AJAX: How to display the Flash error message when validation on the server side fails?
它建议从Rails应用程序返回HTML错误状态,然后您可以在Ajax'错误'回调中添加flash [:alert]。