Rails i18n视图中的项目列表和循环

6

如何在视图中列出yml中的元素并循环遍历它们以访问其属性? 我目前的代码只能获取列表中的最后一项。我想在视图中循环遍历项目列表并显示它们的titledescription元素。

例如:

yml:

en:
  hello: "Hello world"
  front_page:
    index:
      description_section:
        title: "MyTitle"
        items:
          item:
            title: "first item"
            description: "a random description"
          item:
            title: "second item"
            description: "another item description"

视图:

      <%= t('front_page.index.description_section.items')do |item| %>
          <%= item.title %>
          <%= item.description %>
      <%end %>

结果:

   {:item=>{:title=>"second item", :description=>"another item description"}} 

期望结果:

    first item
    a random description

    second item
    another item description
1个回答

11
请使用以下内容代替:

使用这个代替:

<% t('front_page.index.description_section.items').each do |item| %>
# ^ no equal sign here
  <%= item[:title] %>
     #^^^^ this is a hash
  <%= item[:description] %>
<% end %>

此外,您的项目列表未正确定义:
t('front_page.index.description_section.items.item.title')
# => returns "second item" because the key `item` has been overwritten

使用以下语法在YAML中定义数组: ```yaml my_array: - item1 - item2 - item3 ``` 其中,`my_array`是数组的名称,`item1`、`item2`和`item3`是数组中的元素。
items:
- title: "first item"
  description: "a random description"
- title: "second item"
  description: "another item description"

要进行检查,您可以在IRB控制台中执行以下操作:
h = {:items=>[{:title=>"first item", :description=>"desc1"}, {:title=>"second item", :description=>"desc2"}]} 
puts h.to_yaml
# => returns
---
:items:
- :title: first item
  :description: desc1
- :title: second item
  :description: desc2

是的!成功了。运行得很好。我必须添加一个 .each 以使其正确循环。 - DogEatDog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接