Rails 4在js视图中呈现Gritter消息

时间:2015-12-25 11:19:21

标签: javascript jquery ruby-on-rails ruby gritter

使用Rails 4.2.4,ruby 2.2.2,gritter gem 1.2.0。我的控制器用js回复:

#posts_controller.rb
if @post.update post_params
  gflash :success => "Link updated"
end

official doc一致,这是我的观点:

#update.js.erb
<%= gflash :js => true %>

问题是没有呈现,Rails服务器工作正常,并且在控制台中没有显示任何问题。我检查了生产的js,我看到了这个:

jQuery(function(){jQuery.gritter.add({image:'/assets/success-0b8a2dedd729f28e513472812f5483ae2817ae482c0b744c3ce56c9dd2b2bc1d.png',title:'
Success',text:'Link updated'});});

浏览器似乎没有渲染jQuery函数。 (我已经在我的应用程序中安装了jquery) 想法?

1 个答案:

答案 0 :(得分:0)

<强>解决方案:

简短: <%= (gflash :js => true).html_safe %>

Long:使用Fiddler Web Debugger检查服务器响应我注意到响应是这样的:

jQuery(function(){jQuery.gritter.add({image:&#39;/assets/success-0b8a2dedd729f28e513472812f5483ae2817ae482c0b744c3ce56c9dd2b2bc1d.png&#39;,title:&#39;Success&#39;,text:&#39;Link updated&#39;});});

如果我在chrome控制台中执行上面的代码,则会出错:

VM8474:2 Uncaught SyntaxError: Unexpected token 

所以使用html_safe方法对我有用:<%= (gflash :js => true).html_safe %>