如何在js渲染部分中传递html_safe字符串

VP.*_*VP. 5 ruby-on-rails ruby-on-rails-3

我有一个要迁移到 rails 3 的 rails 2.3.9 应用程序。

和几乎所有人一样,我在渲染字符串时遇到了问题,特别是内联的 JQUERY 脚本。之前,有人告诉我,在 rails 3 中,它发生了变化,我现在无法重写所有脚本。我会去做,它会被安排,但现在,我想让它工作。

转到我的问题:

我有一个带有以下代码的控制器

respond_to do |format|
 format.js { render :partial=>'update'}
 format.html { head 406 }
end
Run Code Online (Sandbox Code Playgroud)

我的 _update.js.erb 混合了 JS 和 ERB:

<% if MyClass.count > 0 %>
 $('.show_object:visible').hide();
<%else%>
  if($('.show_object').css('display') == 'none'){
   $('.show_object').blink({times: 7})
  }
<%end%>
Run Code Online (Sandbox Code Playgroud)

它适用于 rails 2.3.9,但不适用于 Rails 3。我的问题是:

  • 我应该把我所有的 jquery 放在一个 html_safe 调用中吗?
  • 控制器中有一种方法可以将整个部分标记为 html_safe?

VP.*_*VP. 4

我确实在控制器中解决了这个问题:

format.js { 
 render :js=> { render_to_string(:partial=>'update').html_safe!}
} 
Run Code Online (Sandbox Code Playgroud)

它有效,但看起来不是一个好的解决方案。还有其他想法吗?