options_for_select и i18n

Кажется, это строки ISO-времени ISO8601: https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations

Итак, на Delphi XE 6 и позже вы можете использовать соответствующая функция преобразования: ISO8601ToDate

http://docwiki.embarcadero.com/Libraries/XE8/en/System.DateUtils.ISO8601ToDate

Но если вы используете более старую версию Delphi, тогда вы можете использовать функцию XMLTimeToDateTime в модуле XSBuiltIns для этого преобразования (доступного с Delphi 6).

http://docwiki.embarcadero.com/ Библиотеки / Токио / о / Soap.XSBuiltIns.XMLTimeToDateTime

0
задан ardochhigh 19 January 2019 в 19:48
поделиться

1 ответ

Ссылка на документ здесь: https://apidock.com/rails/v3.2.8/ActionView/Helpers/FormOptionsHelper/options_for_select

options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")
  <option value="$20">Basic</option>\n<option value="$40" selected="selected">Plus</option>

Предположим, в вашем файле локали названия языков следующие:

en:
  languages:
    en: 'English'
    de: 'German'
    ga: 'Irish'
    fr: 'French'

Я думаю, что вам нужно что-то вроде следующего:

f.select :language, options_for_select(
  LanguageName::LANGUAGES.map { |lang| [t("languages.#{lang}"), lang] }.to_h
  f.object.language || t('languages.fr')
)

Конечно, всегда лучше извлечь метод из в вспомогательный файл:

class ApplicationHelper
  def map_locale_names(locale)
    LanguageName::LANGUAGES.map { |lang| [t("languages.#{lang}", locale: locale), lang] }.to_h
  end
end

, чтобы ваш метод стал следующим:

f.select :language, options_for_select(
  map_locale_names(locale: params[:locale]),
  f.object.language || t('languages.fr')
)

Надеюсь, это поможет.

0
ответ дан yihyang 19 January 2019 в 19:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: