2013-09-19 4 views
4

я создал виртуальную (непостоянный) модель в Rails 3 (см ниже)Локализация атрибутов в Rails виртуальных моделях

теперь мне нужно применить переводы к модели, но места стандартных переводов не похоже, работают. например

en: 
    activerecord: 
    attributes: 
     media_upload: 
     title: "My Title" 

Я знаю, что могу применить это непосредственно к метке с необязательным параметром строки, например. f.label :title, t('activerecord.attributes.media_upload'), но это не работает для сообщений об ошибках в результате проверок. Аналогично, я мог бы добавить ключ к файлу переводов для хелпера меток, как это предложено в Localise nested virtual attribute in Rails, но это также не работает для проверки.

helpers: 
    label: 
    media_upload: 
     title: "My Title" 

Помимо пересмотра всех соответствующих сообщений проверки, есть ли другой способ, я могу сделать локализацию атрибутов в непостоянных моделях ??

модель образец приведен ниже,

class MediaUpload 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :media_file, :title 

    validates_presence_of :media_file 
    validates_presence_of :title 

    def initialize(attributes = {}) 
    unless attributes.nil? 
     attributes.each do |name, value| 
     send("#{name}=", value) 
     end 
    end 
    end 

    def persisted? 
    false 
    end 
end 
+0

Вы должны использовать ActiveModel вместо ActiveRecord в activerecord.errors.models.admin.attributes.name.blank activerecord.errors.models.admin.blank ActiveRecord .errors.models.user.attributes.name.blank activerecord.errors.models.user.blank activerecord.errors.messages.blank errors.attributes.name.blank errors.messages.blank Например activemodel: атрибуты: пользователей: Логин: "Вход" адрес электронной почты: "Отправить" first_name: "Имя" ошибки: модели: пользователь: атрибуты: Логин: is_invalid: "^ Неправильный логин" – Puneeth

+0

Вы решили эту проблему? –

ответ

5

Вам нужно написать так:

en: 
    activemodel: 
    attributes: 
     media_upload: 
     title: "My Title" 

не activerecord заменить его activemodel

0

Похоже, что вы используете simple_form камень для формирование форм.

Так следующее i18n chapter from github файл интернационализация должен выглядеть следующим образом

en: 
    simple_form: 
    labels: 
     media_upload: 
     media_file: My File 
     title: My Title 

Если вы используете Rails 4, чем есть простой способ сделать ActiveModel Form Objects. Вы можете просто include ActiveModel::Model как так

class MediaUpload 
    include ActiveModel::Model 

    attr_accessor :media_file, :title 

    validates_presence_of :media_file 
    validates_presence_of :title 
end 
Смежные вопросы