Komunikaty o błędach, jak je zmienić?

Witam,

Jeżeli ktoś sobie z tym poradził, byłbym niezmiernie wdzięczny za podzielenie się tym jak to zrobił;)

Otóż chodzi o standardowe komunikaty o błędach wyrzucanych przez Railsy, tj.:

“2 errors prohibited this user from being saved”
“There were problems with the following fields:”

Da się je jakoś zmienić?

Mozesz w definicji walidatora podac pole : :message => “To pole nie moze byc puste”

Poczytaj rowniez tu:
http://api.rubyonrails.com/classes/ActiveRecord/Errors.html
http://api.rubyonrails.com/classes/ActionView/Helpers/ActiveRecordHelper.html#M000459
http://api.rubyonrails.com/classes/ActionView/Helpers/ActiveRecordHelper.html#M000460

Jw. Zapewne, oprocz fields, chcesz tez zlokalizowac to:

“2 errors prohibited this user from being saved”
“There were problems with the following fields:”

niestety jest to hardcoded w active_record_helper.rb, ale wystarczy nadpisac te metode swoja i voila!

      def error_messages_for(object_name, options = {})
        options = options.symbolize_keys
        object = instance_variable_get("@#{object_name}")
        if object && !object.errors.empty?
          content_tag("div",
            content_tag(
              options[:header_tag] || "h2",
              "#{pluralize(object.errors.count, "error")} prohibited this #{object_name.to_s.gsub("_", " ")} from being saved"
            ) +
            content_tag("p", "There were problems with the following fields:") +
            content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
            "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
          )
        else
          ""
        end
      end

Najlepiej uzyj pluginu Localization Simplified (http://justaddwater.dk/2006/08/24/ruby-on-rails-plugin-localize-your-rails-app) lub kombinuj z GLoc jezeli chcesz wiecej niz jeden jezyk.

[quote=Adamh]Mozesz w definicji walidatora podac pole : :message => “To pole nie moze byc puste”

Poczytaj rowniez tu:
http://api.rubyonrails.com/classes/ActiveRecord/Errors.html
http://api.rubyonrails.com/classes/ActionView/Helpers/ActiveRecordHelper.html#M000459
http://api.rubyonrails.com/classes/ActionView/Helpers/ActiveRecordHelper.html#M000460[/quote]
To jest wiadome i nie rozwiazuje problemu o ktorym pisze. Chodzi mi o sam “nagłówek” komunikatu o blędzie nie o jego treść, bo to łatwo zmienić.

Masz error_messages_for ktory nie zwraca naglowka
i rozwiazuje problem o ktorym piszesz - moze nie tak jakbys tego chcial.

[quote=pawel]Jw. Zapewne, oprocz fields, chcesz tez zlokalizowac to:

“2 errors prohibited this user from being saved”
“There were problems with the following fields:”

niestety jest to hardcoded w active_record_helper.rb, ale wystarczy nadpisac te metode swoja i voila!

      def error_messages_for(object_name, options = {})
        options = options.symbolize_keys
        object = instance_variable_get("@#{object_name}")
        if object && !object.errors.empty?
          content_tag("div",
            content_tag(
              options[:header_tag] || "h2",
              "#{pluralize(object.errors.count, "error")} prohibited this #{object_name.to_s.gsub("_", " ")} from being saved"
            ) +
            content_tag("p", "There were problems with the following fields:") +
            content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
            "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
          )
        else
          ""
        end
      end

Najlepiej uzyj pluginu Localization Simplified (http://justaddwater.dk/2006/08/24/ruby-on-rails-plugin-localize-your-rails-app) lub kombinuj z GLoc jezeli chcesz wiecej niz jeden jezyk.[/quote]
Dzieki wielkie! O to mi chodzilo, ale jakos nie moglem sie tego doszukac;)