【问题标题】:Ruby on Rails Access to object in array passed as paramRuby on Rails 访问作为参数传递的数组中的对象
【发布时间】:2017-11-18 17:33:12
【问题描述】:

我正在使用 ajax 从客户端发送一组对象:

  $.ajax({
              type:    "POST",
              url:     "http://localhost:3000/ventas/",
              data:    {detalles: detalles},
              success: function(post){ console.log("Ok") },
              error:   function(post){ console.log(this) }
            });

在我的服务器中,我收到了这个参数(服务器控制台的行):

Parameters: {"detalles"=>{"0"=>{"id"=>"249", "cantidad"=>"2", "importe"=>"40"}, "1"=>{"id"=>"382", "cantidad"=>"2", "importe"=>"470"}}}

现在我想访问这个数组的每个对象,这是我的尝试:

def  create
    @details= params[:detalles]
    puts @details["0"]
end

everythig 没问题,但我如何遍历所有对象?因为“0”是一个字符串,如果我只输入 0 它就不起作用。我如何循环通过@details 和访问每个对象,然后访问它的属性?谢谢

【问题讨论】:

  • @details 是一个哈希值。 HashEnumerable。后者可以用例如迭代。 each.
  • @mudasobwa 非常高兴。他必须使用Enumerable类的方法

标签: jquery ruby-on-rails arrays ruby


【解决方案1】:

感谢@mudasobwa 和@Fabrizio Bertoglio。 正确的答案是: 用于迭代对象的哈希:

def create
 @details.each { |x| puts @details["#{x}"] }
end

用于迭代对象并访问其属性:

 def create
 @details.each { |x| puts @details["#{x}"][:importe] }
end

【讨论】:

  • 不,这不是正确的方法。人们可能会去查看Hash#each 的文档,并查看迭代块产生键值对已经@details.each { |_, v| puts v }。按键查找是多余的,而且性能较差。
  • 好的,您可以为我的案例添加代码吗?回答它,我把它作为正确的答案,谢谢
猜你喜欢
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2020-04-15
  • 1970-01-01
相关资源
最近更新 更多