Перевести контроллер 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 %>