Page 146 of 171

Rails 3 + incompatible character encodings: UTF-8 + Mysql + Ruby 1.9

Jeśli dostajemy taki błąd:

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)

w nowych Railsach, korzystając z Mysqla, oznacza to że pora zmienić driver do bazy ;)

W gemfile'u zamiast:

gem 'mysql'

Należy użyć:

gem 'ruby-mysql'

Po tym zabiegu, musimy jeszcze w pliku database.yml podać ścieżkę do socketu mysqla. Aby wykryć gdzie on się znajduje, musimy wpisać następującą komendę do konsoli:

mysql_config --socket

Otrzymane dane wprowadzamy w taki sposób:

socket: /var/run/mysqld/mysqld.soc

Tyle :)

Rails 3 + error_messages_for wrong number of arguments (2 for 1)

Migrując z tableless na Activemodel i korzystając z ręcznej polonizacji poprzez:

  def self.human_attribute_name(attr)
      HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

napotkamy na taki oto błąd, kiedy będziemy chcieli wyświetlić błędy powalidacyjne:

wrong number of arguments (2 for 1)

Nie wiem czemu tak jest, ale wiem jak temu zaradzić ;) Wysyłamy self.human_attribute_name do lamusa.

Zamiast tego, korzystamy z include ActiveModel::Translation dla naszego modelu, po czym jak gdyby nigdy nic, dopinamy Activemodel identycznie jak Activerecord:

  activemodel:
    errors:
      template:
        body: "Wystąpił problem w następujących polach:"
        header:
          one: "Jeden błąd uniemożliwił przesłanie formularza:"
          other: "Następujące błędy uniemożliwiły przesłanie formularza:"
      messages:
        too_long: jest za długi/a (maksymalnie {{count}} znaków)
        too_short: jest za krótki/a (minimum {{count}} znaki/ów)
    attributes:
      dir_creator: *attributes

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑