1

我不确定这个问题的标题是否使用了正确的术语,但希望这个描述会有所帮助。如果您需要更多信息,请告诉我。

我从表单中获取中文文本并将其拆分为二维的句子和单词数组。然后,我想使用数据库中的字典条目定义所有单词。有些词不在数据库中,所以我想检查一下。我正在尝试的方法不起作用。

这是我当前的代码:

<% @lesson.parsed_content.each_with_index do |sentence, si| %> #iterate 1st dimension
  <% sentence.each_with_index do |word,wi| %> #iterate 2nd dimension
    <% sentence = sentence.to_s %>
    <div class="word blt" id="<%= wi %>">
    <div class="definition blt">
        <% definition = DictionaryEntry.where(:simplified => word) %> #search by simplified chinese
        <% definition.find_each do |w| %>
        <% if w.definition == nil %> # PROBLEM: this never returns true.
            <%= word %>
            <% else %>
        <%= w.definition %>
        <% end %>
        <% end %>
    </div>
    <div class='chinese blt'> <%= word %></div>
    </div>
  <% end %>
<% end %>

<% if w.definition == nil %>如果我的数据库中没有定义,如何更改为返回 true?

4

1 回答 1

2

这是在黑暗中拍摄的,但首先我会在您将变量句子转换为字符串并循环遍历它时切换您的代码。(除非你有理由这样做)

<% sentence = sentence.to_s %>
<% sentence.each_with_index do |word,wi| %> #iterate 2nd dimension

其次,根据您的数据在数据库中的放置方式,它可能是一个空字符串而不是 nil。所以我会改变条件

<% if w.definition == nil %> # PROBLEM: this never returns true.

<% if w.definition.blank? %> # Checks to see if definition is blank

Blank 将检查其是否为假、空或空白字符串。

最后,缩进很有帮助,尤其是在运行循环和条件时。它在眼睛上更容易,并帮助您了解正在发生的事情。

<% @lesson.parsed_content.each_with_index do |sentence, si| %> 
  <% sentence = sentence.to_s %>
  <% sentence.each_with_index do |word,wi| %> 
    <div class="word blt" id="<%= wi %>">
      <div class="definition blt">
      <% definition = DictionaryEntry.where(:simplified => word) %> 
      <% if definition.empty? %>
        <% word %>
      <% else %>  
        <% definition.find_each do |w| %>
          <%= w.definition %>
        <% end %>
      <% end %>
      </div>
      <div class='chinese blt'> <%= word %></div>
    </div>
  <% end %>
<% end %>

让我知道结果。

于 2012-12-18T22:16:35.710 回答