【问题标题】:How to show last value in views in rails and mongodb如何在rails和mongodb的视图中显示最后一个值
【发布时间】:2013-08-17 05:06:51
【问题描述】:

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

@portfolio=Portfolio.last

我得到这个回报:
#"文件夹 1", "stocks"=>[{"name"=>"Atul auto", "id"=>"stock id1", "qty"=>"10"}]}, {"name"= >nil, "stocks"=>[{"name"=>"Caner fill", "id"=>"stock id2", "qty"=>"15"}]}]>

但是当我在我的控制器中使用它并在视图中使用实例变量时,我得到了这个回报:
Portfolio:0x007ff97802cff0
每次我刷新页面时,这个数字都会不断变化。如果我使用这个
@portfolio=Portfolio.all.to_a
我在控制台的视图中得到相同的回报。任何猜测。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongoid


    【解决方案1】:

    当你执行时

    @portfolio = Portfolio.last
    

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

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

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

    【讨论】:

      【解决方案2】:

      你不能直接输出一个类型的对象。 , 如果你这样做,你会得到对象的地址。你需要在你的视图中做这样的事情:

      <%= @portfolio.stocks.name %>
      

      【讨论】:

      • 最后的答案是我的字段是文件夹。@portfolio.folders。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      相关资源
      最近更新 更多