Я хочу объединить функцию render
с путем, объявленным в файле .yml i18n. Мой файл I18n .yml имеет следующую структуру:
pages:
nav:
items:
- id: books
link: 'books'
- id: about
link: 'about'
- id: contact
link: 'contact'
А мой основной макет такой:
index.html.erb
<% t('pages.nav.items').each do |item| %>
<div id='<%= item[:id] %>'>
<%= render item[:link] %>
</div>
<% end %>
Когда я использую <% render item[:link] %>
, я (очевидно) получаю сообщение об ошибке, поскольку синтаксис неверен:
'nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.
Я также попробовал этот код:
<%= render "'"+item[:link].to_s+"'"%>
и этот:
<%= render partial: "'"+item[:link].to_s+"'"%>
Но получите эту ошибку, так как render
, похоже, учитывает только первый аргумент:
Missing partial pages/_'', application/_'' with {:locale=>[:fr], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
Итак, мой вопрос: как бы вы предложили объединить render
со значениями, объявленными в файле .yml?