首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HAML / Rails中使用嵌套数组时出现问题

在HAML / Rails中使用嵌套数组时出现问题
EN

Stack Overflow用户
提问于 2012-09-30 08:48:46
回答 1查看 246关注 0票数 0

我使用以下视图获取{"crop"=>"Carrots",“amount”OrderedHash}:BSON::OrderedHash‘的未定义方法’crop‘:{“crop”OrderedHash“,"amount"=>12.15}:BSON::OrderedHash’:

代码语言:javascript
复制
%table
  %tr
    %th Date of Harvest
    %th Crops
    %th Photo
    %th
    %th
    %th
    %th

  - @harvests.each do |harvest|
    %tr
      %td= harvest.created_at
      %td  
        - harvest.harvested_crops.each do |harvested_crop|
          %tr  
            %td= harvested_crop.crop
            %td= harvested_crop.amount
      %td  
      %td= harvest.photo
      %td= link_to 'Show', harvest
      %td= link_to 'Edit', edit_harvest_path(harvest)
      %td= link_to 'Destroy', harvest, method: :delete, data: { confirm: 'Are you sure?' }

模型如下:

代码语言:javascript
复制
class Harvest

        include MongoMapper::Document


        #references
        key :photo,             String  #photo of combined harvest (many crops)
        key :harvested_crops,   Array
        key :user_id,           ObjectId

        timestamps!

        #Validations
        validates_presence_of :harvested_crops
end

来自shell的数据如下:

代码语言:javascript
复制
> db.harvests.find()
{ "_id" : ObjectId("5067846437bca62bccc3729d"), "user_id" : "5067844537bca62bccc3729b", "photo" : "mybumpercrop.jpg", "harvested_crops" : [     {   "crop" : "Carrots",     "amount" : 12.15 },     {   "crop" : "Apples",  "amount" : 32.55 },     {   "crop" : "Potatoes",    "amount" : 12.44 },     {   "crop" : "Spinach",     "amount" : 1.23 } ] }
{ "_id" : ObjectId("5067846f37bca62bccc3729e"), "user_id" : "5067844637bca62bccc3729c", "photo" : "carrotsnspuds.jpg", "harvested_crops" : [    {   "crop" : "Carrots",     "amount" : 1112.15 },   {   "crop" : "Potatoes",    "amount" : 3212.44 } ] }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-30 09:24:50

看起来harvested_crops是一个哈希对象数组,每个对象都包含两个键:"crop""amount"。在标准的Hash对象上没有crop方法;相反,您可以使用[]运算符,就像使用数组一样来访问内容。所以试试吧:

代码语言:javascript
复制
%td= harvested_crop["crop"]
%td= harvested_crop["amount"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12657762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档