2015-06-23 1 views
1

Это мои моделиRuby on Rails, как использовать i18n для поиска вложенных полиморфных?

class Employee < ActiveRecord::Base 
    has_many addresses, as: :locatable 
end 

class Client < ActiveRecord::Base 
    has_many addresses, as: :locatable 
end 

class Address < ActiveRecord::Base 
    belongs_to :locatable, polymorphic: true 
end 

И я установил свои маршруты, чтобы быть

resources :employees do 
    resources :addresses, :defaults => { :locatable => 'employee'} 
end 

resources :clients do 
    resources :addresses, :defaults => { :locatable => 'clients'} 
end 

И в адресном _form.html.erb, я пытаюсь показать другой текст для адреса сотрудников и клиентов обращаться (например, адрес сотрудника показывает «Это известный адрес сотрудника», а адрес клиента показывает «Клиенты можно найти здесь»).

Это мой i18n файл

en: 
    employees: 
    new: 
     address: 'These are the known employee address' 
    edit: 
     address: 'These are the known employee address' 
    show: 
     address: 'These are the known employee address' 
    clients: 
    new: 
     address: 'Clients can be found here' 
    edit: 
     address: 'Clients can be found here' 
    show: 
     address: 'Clients can be found here' 

В 2 подхода я могу думать. Первый заключается в использовании Lazy Load

t(.address) 

который будет иметь нагрузку повторных меток, так как «новый» и «редактировать» и «показать» все имеют ту же метку. 2-й подход заключается в использовании области видимости, что-то вроде

t .address, scope: [:locatable, :new, :address] 

Таким образом, мне не нужно, чтобы отделить адрес в новом, редактировать и шоу. Тем не менее, я не уверен, как получить: локальную область. Или есть лучший подход для этого?

Пожалуйста, помогите!

ответ

1

После нескольких часов проб и ошибок, решается

en: 
    :employees: 
    :address: 'These are the known employee address' 
    :clients: 
    :address: 'Clients can be found here' 

И в _form

<%= t("#{params[: locatable]}.address") %> 

простой ...

 Смежные вопросы

  • Нет связанных вопросов^_^