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

时间:2010-10-11 10:38:40

标签: ruby-on-rails ruby-on-rails-3

我有一个rails 2.3.9应用程序,我正在迁移到rails 3。

几乎每个人,我都有渲染字符串的问题,特别是内联的JQUERY脚本。之前,有人告诉我,在rails 3中,它发生了变化,我现在无法重写所有脚本。我会这样做,它会被安排,但是现在,我想让它成功。

回答我的问题:

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

respond_to do |format|
 format.js { render :partial=>'update'}
 format.html { head 406 }
end

我的_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%>

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

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

1 个答案:

答案 0 :(得分:2)

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

format.js { 
 render :js=> { render_to_string(:partial=>'update').html_safe!}
} 

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