2011-10-18 48 views
2

我有一個大量的這些文字輸入的形式:紅寶石 - 從陣列輸出壞

<%= text_field_tag 'name[seq]['+dat.id.to_s+']', dat.seq%> 

發送後,這種形式我想將它們保存到數據庫中,我嘗試從每個輸入獲取值循環:

unless params[:name].nil? 
    params[:name][:seq].each_with_index do |sq, i| 
    puts sq 
    end 
end 

但是在端子的輸出是錯誤的,例如,如果我與值

<%= text_field_tag輸入'名[序列] [25]',3%>

所以我會期待輸出,但我會去終端這樣的:

25 
3 

是這裏的東西重要的是,我沒有看到?

回答

1

是的,你錯過了一些東西。在您的each_with_index區塊中,sq將是一個數組,因此您可以獲得該輸出。

那麼,這是怎麼回事?那麼,你的params將包含此:

"name" => { "seq" => { "25" => "3" } } 

這意味着,params[:name][:seq]是這樣的:

{ "25" => "3" } 

然後你申請each_with_index於通過哈希迭代。如果你這樣做:

params[:name][:seq].each_with_index do |(k,v), i| 
    puts "-#{k}-#{v}-" 
end 

你會看到發生了什麼事。

如果你只是想在3那麼你可以如上遍歷params[:name][:seq],只是看v塊內,或者,如果你知道什麼'25'是一些其他的方式,你可以只直奔那裏:

three = params[:name][:seq]['25'] 
+0

謝謝,這意味着...索引**我**在這裏完全沒用,對吧? – user984621

+0

@ user984621:幾乎沒用,只是一個'each'可能對你也是一樣。 –