2016-10-03 3 views
1

私は、ユーザーが自分の名前や化学要素(悪いロゴを壊すなど)で単語を変換できるアプリケーションを作成しようとしています。ここでの質問のカップル、しよう、と私はちょっと「理想的な」解決策を見つけるしていることを長い反射私の後に... (ヒュム私は...願っています)ネストされたハッシュから特定の値を表示する方法

私はacalamを入力する場合に表示することを望みますfolowing:

symbols

何のシンボルはそれができるので、私は最初のエントリをkeepkingい一致しない場合:=> LL O ハロー(太字チャーは、既存の化学記号を表す)

私のモデルは今、私の見解では、この:(enter image description here

EDITのように見えるために(今のシンボルだけのカップル)

class Convertor < ActiveRecord::Base 

    def get_chemical 
    symbols = { 
     "ac" => { 
      :chem_name => "Actinium", 
      :number => 89, 
      :symbol => "Ac", 
      :molar => 227 
      }, 
     "al" => { 
      :chem_name => "Aluminium", 
      :number => 13, 
      :symbol => "Al", 
      :molar => 26.981539 
      }, 
     "am" => { 
     :chem_name => "Americium", 
     :number => 95, 
     :symbol => "Am", 
     :molar => 243 
      } 
      } 

     #not sure how to use this 
     result=[] 
     symbols.each do |key, value| 
     value.each do |key2, value2| 
      result << value2 
     end 
     result 
     end 


     name.downcase.gsub!(Regexp.union(symbols.keys), symbols) 

    end 

end 

このビュー

.col-xs-12 
    .number 
     = @convertor.get_chemical # plus something? 
    .symbol 
     = @convertor.get_chemical # plus something? 
    .molar 
     = @convertor.get_chemical # plus something? 
    .chem_name 
     = @convertor.get_chemical # plus something? 

次のようになります

これらはすべて化学記号ですので、それぞれの条件を作成する必要がありますか?それとも良い方法がありますか? enter image description here

+0

あなたが直面している問題は何ですか? –

+0

私は必要な値を抽出する方法がわかりません –

答えて

1

記号は1文字または2文字長いですか?あなたが最初に検索しようとしている2のどちらかを決定する必要があります。1.

、その後、の2文字を言わせ

「こんにちは」の場合は次の比類のないペアのハッシュを検索:彼は、ハッシュであるため、ループする必要はありません。symbols.include? 'He'がある場合は、次に一致しないペアに移動してください。そうでない場合は、「H」だけを検索して繰り返してください。

最初の「L」が来ると、それは、単に「L」を返し、「LL」はどちらかと一致しない、一致秒「l」と同じ、あなたは

で終わるしませんハッシュは、あなたがしたいシンボルを含み、単にそれを返すとき彼はLL O

lookup = 'He' 
symbols[lookup] 
symbols[lookup][:chem_name] 
+0

私の編集を見てください私は記号のテーブルを追加しました。 シンボルも3文字にすることができます。 だから私は103の異なる条件をしなければならないのですか? –

+0

3文字の長さにできる唯一の化学記号はまれであり、単語または名前を構成しません。二重U文字の単語/名前はほとんどありません。少なくとも最初の実装では、この可能性は無視したいと思います。それはあまりにも遠い可能性があります。 – OnlySteveH

+0

あなたの権利はありますが、私はそれらを含めると表示されます。なぜなら、一部の人々は、治療用のものheheを打つことができるからです。 –

関連する問題