Rails 3升级后阻止帮助程序和JavaScript模板的问题

时间:2011-02-19 06:00:10

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

我有一个应用程序我从Rails 2.3升级到Rails 3,它使用了升级后无效的帮助程序和JavaScript模板的组合。我在视图partial中有以下代码:

  <%= content_for :jstemplates do -%>
  <%= "var serviceoverride='#{generate_template(customer_form, :serviceoverrides).html_safe}'" %>
  <%= "var clientimage='#{generate_template(customer_form, :customer_images).html_safe}'" %>
  <%= "var formula='#{generate_template(customer_form, :formulas).html_safe}'" %>
  <% end -%>

调用generate_template助手:

def generate_template(form_builder, method, options = {})
  escape_javascript generate_html(form_builder, method, options)
end

def generate_html(form_builder, method, options = {})
  options[:object] ||= form_builder.object.class.reflect_on_association(method).klass.new
  options[:partial] ||= method.to_s.singularize
  options[:form_builder_local] ||= :f  

  form_builder.fields_for(method, options[:object], :child_index => 'NEW_RECORD') do |f|
    render(:partial => options[:partial], :locals => { options[:form_builder_local] => f })
  end
end

视图partial来自其中一个标准控制器视图。问题是呈现页面上的JavaScript输出始终是HTML转义的,因此直接在页面上呈现。这在Rails 2.3.x中正常工作,显然在Rails 3中出现了,我怀疑&lt; %%&gt;行为的变化阻止风格的助手。

我的问题是我无法让jstemplates呈现未转义状态。我已经查看了块样式助手的更改,并尝试使用&lt;%= raw%&gt;确保所有内容生成块都使用&lt;%=%&gt;函数,将.html_safe添加到字符串等。我似乎错过了一些基本的东西。

任何帮助都将不胜感激。

克里斯

1 个答案:

答案 0 :(得分:1)

我找到了答案。我显然在错误的地方有原始块。这个改变修正了它:

<%= content_for :jstemplates do -%>
  <%=raw "var serviceoverride='#{generate_template(customer_form, :serviceoverrides).html_safe}'" %>
  <%=raw "var clientimage='#{generate_template(customer_form, :customer_images).html_safe}'" %>
  <%=raw "var formula='#{generate_template(customer_form, :formulas).html_safe}'" %>
<% end -%>