【问题标题】:Ruby - bad output from arraysRuby - 数组的错误输出
【发布时间】:2011-12-10 11:49:47
【问题描述】:

我有一个包含大量这些文本输入的表单:

<%= 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

但是终端中的输出是错误的,例如,如果我有一个带有值的输入

所以我预计输出是 3,但我会到达终端:

25
3

这里有什么重要的东西,我没有看到吗?

【问题讨论】:

    标签: ruby-on-rails ruby arrays loops each


    【解决方案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']
    

    【讨论】:

    • 谢谢,也就是说……索引 i 在这里完全没用,对吧?
    • @user984621:几乎没用,只是each 可能对你也一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2021-07-12
    • 2021-05-25
    • 2016-06-09
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    相关资源
    最近更新 更多