Использование i18n для изменения текста между обновлением и созданием - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть модель, которая использует одну и ту же форму для создания и обновления действий контроллера. Ничего особенного там нет. У меня есть кнопка отправки, меняющая свой текст в зависимости от того, какое действие использует en.yml

en:
  helpers:
  submit:
    location:
      create: "Add to map"
      update: "Save changes"

Как бы я изменил текст этой формы в соответствии с соответствующим действием?

Например, если это было создано,

<h1>Create new location</h1>

и при обновлении

<h1>Update location</h1>

1 Ответ

1 голос
/ 15 февраля 2011

Вы можете просто добавить текст в свой файл en.yml:

en:
  create_new_location: 'Create new location'
  update_location: 'Update location'

И затем использовать следующее в своем представлении (создать / обновить)

<h1><%= I18n.t(params[:action] == 'create' ? 'create_new_location' : 'update_location') %></h1>

Или, есливы использовали new / edit:

<h1><%= I18n.t(params[:action] == 'new' ? 'create_new_location' : 'update_location') %></h1>

Вы также можете сделать перевод на основе действия и встроить его в текст перевода, выполнив что-то вроде этого:

I18n.t "location.action.#{params[:action]}"

IЯ бы порекомендовал против этого, потому что трудно сказать, какой текст вы на самом деле переводите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...