Changing error display format in Rails ActionView Helpers
I'm trying to modify the default behaviour of showing errors before the form to show them next to the fields instead.
I'm using this to achieve that:
ActionView::B开发者_如何转开发ase.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(#{html_tag}<span class="validation-error">
#{instance.error_message.join(',')}</span>)
else %(#{html_tag}<span class="validation-error">
#{instance.error_message}</span>)
end
end
However, for some reason, the result html is coded with entities, so it doesn't get displayed:
<div class="group">
<label class="label" for="user_city">City and Postcode</label>
<input class="text_field" id="user_city" name="user[city]" size="30" type="text" value="94-050 Łódź" />
<span class="description">np. 00-000 Łódź</span>
</div>
<div class="group">
<label class="label" for="user_street">Address</label><span class="validation-error">&nbsp;
translation missing: pl, activerecord, errors, models, user, attributes, street, blank</span>
<input class="text_field" id="user_street" name="user[street]" size="30" type="text" value="" /><span class="validation-error">&nbsp;
translation missing: pl, activerecord, errors, models, user, attributes, street, blank</span>
<span class="description"> </span>
</div>
How can I avoid the result being html_entitied?
It's because your string is not safe. You need call html_safe after the string generate
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(#{html_tag}<span class="validation-error">
#{instance.error_message.join(',')}</span>).html_safe
else %(#{html_tag}<span class="validation-error">
#{instance.error_message}</span>).html_safe
end
end
精彩评论