Ruby on rails 如何在rails和mongodb中的视图中显示最后一个值

Ruby on rails 如何在rails和mongodb中的视图中显示最后一个值,ruby-on-rails,ruby-on-rails-3,mongoid,Ruby On Rails,Ruby On Rails 3,Mongoid,我正在开发带有Mongodb的Rails应用程序。我的模型包含一个公文包类,它有一个名为folders的数组字段。我正在应用程序控制台中执行此操作 @portfolio=Portfolio.last 我得到这个回报: #“文件夹1”、“库存”=>[{“名称”=>“Atul自动”、“id”=>“库存id1”、“数量”=>“10”}],{“名称”=>nil,“库存”=>[{“名称”=>“灌装”、“id”=>“库存id2”、“数量”=>“15”}]> 但是当我在我的控制器中使用它并在视图中使用实例变

我正在开发带有Mongodb的Rails应用程序。我的模型包含一个公文包类,它有一个名为folders的数组字段。我正在应用程序控制台中执行此操作

@portfolio=Portfolio.last
我得到这个回报:
#“文件夹1”、“库存”=>[{“名称”=>“Atul自动”、“id”=>“库存id1”、“数量”=>“10”}],{“名称”=>nil,“库存”=>[{“名称”=>“灌装”、“id”=>“库存id2”、“数量”=>“15”}]>


但是当我在我的控制器中使用它并在视图中使用实例变量时,我得到了这样的返回:
公文包:0x007ff97802cff0
每次刷新页面时,这个数字都会不断变化。如果我使用这个
@portfolio=portfolio.all.to_a

我会在控制台的视图中得到相同的回报。任何猜测。

您不能直接输出类型的对象,如果您这样做,您将获得对象的地址。在您看来,您需要这样做:

<%= @portfolio.stocks.name %>

当您执行

@portfolio = Portfolio.last
@portfolio是一个portfolio对象(您可以在控制台中通过调用@portfolio.class来验证)。您可以通过调用@portfolio.to_s来获取该对象的地址,这将与您获得的输出相匹配,这表明您正在视图中的@portfolio对象上隐式调用_s

相反,如果您调用@portfolio.inspect,您将获得与第一次显示的类似的输出@portfolio.inspect返回一个字符串。因此,您可以在视图中使用@portfolio.inspect生成与您试图生成的内容类似的输出


如果你调用Portfolio.all,你会得到一个Mongoid选择器。Portfolio.all.to_a将使用该选择器将Portfolio MongoDB集合中的所有条目加载到数组中。Portfolio.all.to_a.to_s将产生类似的输出,但带有转义引号。因此,在视图中,对a的隐式.to_调用在视图中产生的输出与在控制台中的输出类似。

最终答案是我的字段是folders.@portfolio.folders。