1

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

公式ドキュメントに従って、これは私の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 %>

長い: 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 に答える