我有一个应用程序我从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添加到字符串等。我似乎错过了一些基本的东西。
任何帮助都将不胜感激。
克里斯
答案 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 -%>