1

使用 Rails 4.2.4、ruby 2.2.2、gritt gem 1.2.0。我的控制器用 js 响应:

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

根据官方文档,这是我的 js 观点:

#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)想法?

4

1 回答 1

0

解决方案:

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

Long: Inspecting server response with 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 %>

于 2016-01-06T13:33:30.443 回答