Я использую gemizeize_accessor для рендеринга формы с многоязычными входами для поля :name
и хотел бы ограничить языки, которые пользователь может вводить на основании того, какие языки были переданы как аргументы метода globalize_attribute_names
. Что-то вроде этого возможно?Ограничить локали globalize_accessor аргументами из контроллера/представления
Вот что я до сих пор:
chart.rb
class Chart < ActiveRecord::Base
belongs_to :chart_type
belongs_to :section
has_many :data_points, dependent: :destroy
translates :name
globalize_accessors :attributes => [:name]
validates :name, presence: true
accepts_nested_attributes_for :data_points
end
charts/new.html.haml
= simple_form_for chart, html: {multipart: true} do |f|
- Chart.globalize_attribute_names.each do |lang|
= f.input lang
= f.input :chart_type, collection: @chart_types
= f.input :section, collection: @sections, label_method: :heading
= f.simple_fields_for :data_points, chart.data_points.build do |c|
= c.input :file, as: :file
= f.submit
UPDATE
Насколько мне известно, единственный способ определить локали для перевода, чтобы передать их в явном виде на уровне модели. Однако, пытаясь использовать метод для их определения, я вижу неопределенную локальную ошибку или ошибку метода. Метод, который я использую в настоящее время, предназначен для экспериментов, и в идеальном случае использование этого метода вызовет родительский элемент диаграммы и вернет для него приемлемые языки. Вот обновленный код:
class Chart < ActiveRecord::Base
belongs_to :chart_type
belongs_to :section
has_many :data_points, dependent: :destroy
translates :name
globalize_accessors :attributes => [:name], locales: languages
validates :name, presence: true
accepts_nested_attributes_for :data_points
def self.languages
[:en, :fr]
end