Dog*_*Dog 6 ruby-on-rails rails-i18n
如何列出我的元素yml并在视图中循环它们并访问它们的属性?我当前的代码只获取列表中的最后一项.我想在视图中循环遍历项目列表并显示它们title和description元素.
例如
阳明:
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"
Run Code Online (Sandbox Code Playgroud)
视图:
<%= t('front_page.index.description_section.items')do |item| %>
<%= item.title %>
<%= item.description %>
<%end %>
Run Code Online (Sandbox Code Playgroud)
结果:
{:item=>{:title=>"second item", :description=>"another item description"}}
Run Code Online (Sandbox Code Playgroud)
期望的结果:
first item
a random description
second item
another item description
Run Code Online (Sandbox Code Playgroud)
请改用:
<% t('front_page.index.description_section.items').each do |item| %>
# ^ no equal sign here
<%= item[:title] %>
#^^^^ this is a hash
<%= item[:description] %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
此外,您的商品列表未正确定义:
t('front_page.index.description_section.items.item.title')
# => returns "second item" because the key `item` has been overwritten
Run Code Online (Sandbox Code Playgroud)
使用以下语法在YAML中定义数组:
items:
- title: "first item"
description: "a random description"
- title: "second item"
description: "another item description"
Run Code Online (Sandbox Code Playgroud)
要检查这一点,您可以在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |