Rails I18n:使用变量渲染部分

时间:2018-04-30 08:54:13

标签: ruby-on-rails internationalization yaml rails-i18n

我希望将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文件中声明的值结合起来?

0 个答案:

没有答案