1

この質問のタイトルが適切な専門用語を使用しているかどうかはわかりませんが、この説明が役立つことを願っています. さらに詳しい情報が必要な場合は、お知らせください。

フォームから中国語のテキストを取得し、それを文と単語の 2 次元配列に分割しています。次に、データベースの辞書エントリを使用してすべての単語を定義したいと考えています。データベースにない単語もあるので、調べてみたいと思います。私がしようとしていることがうまくいきません。

これが私の現在のコードです:

<% @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 は、false、空、または空白文字列かどうかをチェックします。

最後に、インデントは特にループや条件を実行するときに役立ちます。目に優しく、何が起こっているのかを理解するのに役立ちます。

<% @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 に答える