# Gettext error\_messages\_for problem

**URL:** <https://www.ruby-forum.com/t/gettext-error-messages-for-problem/84619>\
**Category:** Rails I18n\
**Created:** [February 6, 2007, 3:14pm UTC](https://www.ruby-forum.com/t/gettext-error-messages-for-problem/84619 "2007-02-06T15:14:56Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![eugene](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/8797f3/32.png) [@eugene](https://www.ruby-forum.com/u/eugene)\
**Post date:** [February 6, 2007, 3:14pm UTC](https://www.ruby-forum.com/t/gettext-error-messages-for-problem/84619/1 "2007-02-06T15:14:56Z")

</div>

Hello,

Can anyone help with my problem? When trying to add validation to Model  
like “validates\_uniqueness\_of” and then put \<%= error\_messages\_for  
‘article’ %\> into view, I get error.

can’t convert Array into String

Extracted source (around line #1):

1: \<%= error\_messages\_for ‘article’ %\>

Please advice.

Thank you.

---

<div class="post-metadata">

**Author:** ![eugene](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/8797f3/32.png) [@eugene](https://www.ruby-forum.com/u/eugene)\
**Post date:** [October 4, 2007, 11:51am UTC](https://www.ruby-forum.com/t/gettext-error-messages-for-problem/84619/2 "2007-10-04T11:51:44Z")

</div>

Can someone confirm that this solution works? I have run into this  
problem as well and can’t get it to work yet. I use Rails 1.2.3, Ruby  
1.8.6. Except for this problem, Gettext works well with rails.

The problem is:

TypeError: can’t convert Array into String  
/opt/local/lib/ruby/gems/1.8/gems/gettext-1.10.1/lib/gettext/active\_record.rb:243:in  
`=~' /opt/local/lib/ruby/gems/1.8/gems/gettext-1.10.1/lib/gettext/active_record.rb:243:in`localize\_error\_message’  
/opt/local/lib/ruby/gems/1.8/gems/gettext-1.10.1/lib/gettext/active\_record.rb:242:in  
`each' /opt/local/lib/ruby/gems/1.8/gems/gettext-1.10.1/lib/gettext/active_record.rb:242:in`localize\_error\_message’  
/opt/local/lib/ruby/gems/1.8/gems/gettext-1.10.1/lib/gettext/active\_record.rb:273:in  
`localize\_error\_messages’  
[…]

Thanks a lot

---

<div class="post-metadata">

**Author:** ![eugene](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/8797f3/32.png) [@eugene](https://www.ruby-forum.com/u/eugene)\
**Post date:** [April 30, 2007, 5:46pm UTC](https://www.ruby-forum.com/t/gettext-error-messages-for-problem/84619/3 "2007-04-30T17:46:50Z")

</div>

ruby-gettext error\_messages\_for wasn’t up-to-date with latest rails  
changes.

i’ve fixed it in my version, maybe this helps you.

you need to edit gettext’s rails.rb and in module L10n remove  
render\_error\_messages\_for and replace the following two functions  
(L10n.error\_messages\_for and ActiveRecordHelper::error\_messags\_for) by

```
def error_messages_for(params, klass)
          options = params.last.is_a?(Hash) ? params.pop.symbolize_keys 
: {}
          objects = params.collect {|object_name| 
klass.instance_variable_get("@#{object_name}") }.compact
          count = objects.inject(0) {|sum, object| sum + 
object.errors.count }

          unless count.zero?
            html = {}
            [:id, :class].each do |key|
              if options.include?(key)
                value = options[key]
                html[key] = value unless value.blank?
              else
                html[key] = 'errorExplanation'
              end
            end

            record = 
ActiveRecord::Base.human_attribute_table_name_for_error((options[:object_name] 
|| params.first).to_s)

            message_title = @error_message_title
            message_explanation = @error_message_explanation

            header_message = n_(message_title, count) % {:num => count, 
:record => record}
            error_messages = objects.map {|object| 
object.errors.full_messages.map {|msg| klass.content_tag(:li, msg) } }

            klass.content_tag(:div,
              klass.content_tag(options[:header_tag] || :h2, 
header_message) < count}) <<
                klass.content_tag(:ul, error_messages),
              html
            )
          end
        end
      end
      def error_messages_for(*params)
        L10n.error_messages_for(params, self)
      end
    end
```
