我已存在的 rails 书籍中,找不到这个问题的原因。想 google 之,却无法用语言描述这个问题。我曾尝试谷歌 "rails erb hash" 或者 "rails erb duplicate hash"。但是找不到这个问题的解答。
<%= @list.each do |one|%>
<p>
<div class="word"><%= one.word%></div>
<div class="num"><%= one.num%></div>
<div class="sentence"><%= one.sentence%></div>
<p class="cn"><%= one.cn%></p>
<p><%= one.grammer%></p>
<%= @map[one].each do |en, zh| %>
<div class="en"><%= en %></div>
<div class="zh"><%= zh %></div>
<br/>
<% end %>
</p>
<% end%>
class CollinsWordsController < ApplicationController
def index
word = params[:word]
@list = Zhmultiword.where :word => word
@map = {}
@list.each do |one|
example = {}
doc = Nokogiri::XML(one.example)
doc.xpath('//pair').each do |pair|
en = pair.xpath('//en')[0].text
zh = pair.xpath('//zh')[0].text
example[en] = zh
end
@map[one]= example
end
end
end
其中 @list 是 colins 字典中一个单词的多个词义的解释。@map以之为键,以这个词义下多个例句组成的 hash 为值。
可能是我 erb 中写的遍历语法有问题,在生成的 html 中发现了多余的字符。如下图所示:
此外,在 html 的最后,发现多出了
do | one | ... end
之中 one 的输出