0

モデル内の配列から描画されるコレクションで入力フィールドを使用しています。これはうまくいきますが、テーブルの実際の列に別の値を返したいと思います。私はsimple_formを使用しています。

モデル

TASK_OPTIONS = %w(Detection Cloning Sequencing Primer_List Primer_Check)

見る

<%= f.input :primer_task, :collection => Primer3Batch::TASK_OPTIONS, :label => 'Task' %>

私は次のようなものを返したいかもしれません:

{1 => 'Detection', 2 => 'Cloning'... etc

またはこれ:

{'AB' => 'Detection, 'C' => 'Cloning' ....

つまり、ページには検出、クローン作成などが表示されますが、データベース列には1、2またはAB、Cが格納 されます。ハッシュを使用して実行できると推測しましたが、構文を完全に理解することはできません。

4

1 に答える 1

0
a = []
%w(Detection Cloning Sequencing Primer_List Primer_Check).each.with_index(1) do |it,ind|
    a << [ind,it]
end
Hash[a]
# => {1=>"Detection",
#     2=>"Cloning",
#     3=>"Sequencing",
#     4=>"Primer_List",
#     5=>"Primer_Check"}

使用するEnumerable#each_with_object

a = %w(Detection Cloning Sequencing Primer_List Primer_Check)
a.each_with_object({}) {|it,h| h[a.index(it) + 1 ] = it }
# => {1=>"Detection",
#     2=>"Cloning",
#     3=>"Sequencing",
#     4=>"Primer_List",
#     5=>"Primer_Check"}
于 2013-06-29T15:49:36.537 に答える