Перевести контроллер action_name в Rails 4

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

<%=t "#{controller.controller_name.capitalize} #{controller.action_name}" %>

... Я застрял на их переводе. Как мне перевести controller.action_name в пользовательском файле перевода?

Я пытался получить доступ к именам действий, как это:

  parkings:
    index: "Parkings index"
    new: "New %{model}"

И много разных вариаций этого, но каждый потерпел неудачу. Не могли бы вы помочь мне?

Это фрагмент моего контроллера:

  def new
    @parking = Parking.new
  end

  def create
    @parking = Parking.new(parking_params)

    if @parking.save
      redirect_to @parking, notice: t(:parking_created)
    else
      render action: 'new'
    end
  end

Благодарю.

2 ответа

Решение

У вас должны быть переводы в вашем файле локали. Добавьте подчеркивание или дефис для разделения слов в ключе

например:

# config/locales/en.yml
en:
  parkings_index: Parkings index
  parkings_new: Parkings new page

просмотреть файл

<%=t "#{controller_name}_#{action_name}" %>

Прежде всего, когда вы говорите, #{controller.controller_name} это означает, что у вас есть объект с именем controller доступно с вашей точки зрения, что не соответствует действительности. Даже если вам удастся получить доступ к контроллеру и названию его действия, я не думаю, что это стоит усилий и времени.

Вместо этого вы можете структурировать ваш файл перевода как-то так:

views:
  model_name (parkings): "Parkings"
    action_1_name (index): "Parkings Index"
    action_2_name (new): "New Parking"
    ...

и по вашему мнению скажем (например) <%= link_to (t "views.model_name.action_name"), :action %>

Другие вопросы по тегам