Problem with block helpers and JavaScript templates after Rails 3 upgrade -
i have application i'm upgrading rails 2.3 rails 3 uses combination of helpers , javascript templates not working after upgrade. have following code in view partial:
<%= content_for :jstemplates -%> <%= "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 -%>
that calls generate_template helper:
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') |f| render(:partial => options[:partial], :locals => { options[:form_builder_local] => f }) end end
and view partial rendered 1 of standard controller views. problem javascript output on rendered page html escaped , directly rendered on page. worked correctly in rails 2.3.x , broke in rails 3, suspect change in behavior of <% %> block style helpers.
my problem cannot jstemplates render unescaped. i've looked changes in block style helpers , tried ensuring content generating blocks using <%= %>, using <%=raw %> function, adding .html_safe strings , on. seems i'm missing basic.
any appreciated.
chris
i found answer. apparently had raw blocks in wrong place. change fixed it:
<%= content_for :jstemplates -%> <%=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 -%>
Comments
Post a Comment