2011-10-18 39 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'可能对你也是一样。 –