Rails 3 upgraded form validation issue

H All,

I have run into a very interesting issue. On one of my apps, after upgrading from 2.3 to 3.0, the form validation started to escape html. Normally what should happen when you submit a form and one of the fields fails validation that field would get surrounded with a

and so on. That seems to be broken in my app and what I get is the correct html but it is escaped, so in the browser I see the actual html code instead of the input control. For instance, this excerpt from the html source:

<div class="field"    >
&lt;span class=&quot;fieldWithErrors&quot;&gt;&lt;label for=&quot;customer_first_name&quot;&gt;First name&lt;/label&gt;&lt;/span&gt;<br />
&lt;span class=&quot;fieldWithErrors&quot;&gt;&lt;input id=&quot;customer_first_name&quot; name=&quot;customer[first_name]&quot; size=&quot;30&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;&lt;/span&gt;
</div>

I verified that on a newly created app everything works fine so this seems to be a configuration issues after upgrading from 2.3.9 to 3.0.

Any help will be greatly appreciated.

Raf

Rafael Szuminski wrote in post #947092:

H All,

I have run into a very interesting issue. On one of my apps, after upgrading from 2.3 to 3.0, the form validation started to escape html. Normally what should happen when you submit a form and one of the fields fails validation that field would get surrounded with a <div class="fieldWithErrors"> and so on. That seems to be broken in my app and what I get is the correct html but it is escaped, so in the browser I see the actual html code instead of the input control. For instance, this excerpt from the html source:

<div class="field">     &lt;span class=&quot;fieldWithErrors&quot;&gt;&lt;label for=&quot;customer_first_name&quot;&gt;First name&lt;/label&gt;&lt;/span&gt;<br />

    &lt;span class=&quot;fieldWithErrors&quot;&gt;&lt;input id=&quot;customer_first_name&quot; name=&quot;customer[first_name]&quot; size=&quot;30&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;&lt;/span&gt;

  </div>

I verified that on a newly created app everything works fine so this seems to be a configuration issues after upgrading from 2.3.9 to 3.0.

Any help will be greatly appreciated.

Raf

Raf, I'm having the exact same problem. Has this problem been resolved? What was the solution?

Thank you very much.

LBfromLA

Strings are HTML-escaped by default in Rails 3, so if you have a helper that generates HTML then you need to explicitly tell Rails that it is 'HTML-safe'.

Are you using a helper or perhaps a plugin to generate your form HTML? If so, it could be that it needs updating to mark HTML as HTML-safe. (This would also explain why a newly-generated Rails 3 app which doesn't have that helper/plugin is generating this HTML correctly.)

Chris