2014-04-26 17 views
8

This प्रश्न ने मेरे प्रश्न का आंशिक रूप से उत्तर दिया। लेखक एक समान जेसन संरचना का उपयोग करता है ..स्ट्रॉन्ग पैरामीटर्स में नेस्टेड ऑब्जेक्ट में रेल 4 नेस्टेड ऐरे

मेरा प्रश्न: नेस्टेड ऑब्जेक्ट में नेस्टेड सरणी को कैसे अनुमति दें? मेरे पास Contribution मॉडल है has_manyFeatures के साथ। मैं जियोजेसन बहुभुज बनाने की कोशिश कर रहा हूं। coordinates रहता खाली

यह JSON मैं

{ 
    "contribution": { 
    "features_attributes": [ 
     { 
     "geojson": { 
      "type": "Feature", 
      "properties": {}, 
      "geometry": { 
      "type": "Polygon", 
      "coordinates": [ 
       [ 
       [ 
        7.263336181640625, 
        52.07190953840937 
       ], 
       [ 
        7.263336181640625, 
        52.135173926548894 
       ], 
       [ 
        7.404785156249999, 
        52.135173926548894 
       ], 
       [ 
        7.404785156249999, 
        52.07190953840937 
       ], 
       [ 
        7.263336181640625, 
        52.07190953840937 
       ] 
       ] 
      ] 
      } 
     } 
     } 
    ], 
    "title": "324", 
    "description": "23" 
    } 
} 

वर्तमान में मेरी परमिट कोड इस तरह दिखता भेज रहा हूँ है:

params.require(:contribution).permit(
    :title, 
    :description, 
    features_attributes: [ 
    { geojson: [ 
     :type, 
     { geometry: [ 
      :type, 
      #{ coordinates: [] } # this works for arrays like coordinates: [ 7.62, 51.96 ] 
      { coordinates: [[]] } 
      ] 
     } 
     ] 
    } 
    ] 
) 
+0

आप 'जोजसन' के लिए हैश का उपयोग क्यों कर रहे हैं? निश्चित रूप से आप 'features_attributes का उपयोग करेंगे: [geojson: [' सुविधाओं के बजाय 'विशेषताएं: [{} ' –

+0

मैंने आपके सुझाव का परीक्षण किया, इससे कोई फर्क नहीं पड़ता। मुझे लगता है कि रूबी पहचानता है कि 'जोजसन' एक हैश है। घुंघराले ब्रेसिज़ सिर्फ मेरे लिए हैं :) – ubergesundheit

+0

यिक्स! मैं अनुदान देता हूं कि स्वीकृत उत्तर काम करता है। फिर भी यह एक कामकाज की तरह लगता है। क्या किसी को पता है कि कोर एपीआई किसी भी तरह से इस कार्यक्षमता का समर्थन करता है या नहीं? –

उत्तर

6

मैं इस तरह अब इसे हल। कृप्या मुझे सही करें! :)

params.require(:contribution).permit(
    :title, 
    :description, 
    features_attributes: [ 
     { 
     geojson: [ 
      :type, 
      { geometry: [ 
       :type, 
       { coordinates: [] }, 
       coordinates: [] 
      ] 
      } 
     ] 
     } 
    ] 
).tap do |whitelisted| 
    whitelisted['features_attributes'].try(:each_index) do |i| 
     whitelisted['features_attributes'][i]['geojson']['geometry']['coordinates'] = params['contribution']['features_attributes'][i]['geojson']['geometry']['coordinates'] 
    end 
    end 
संबंधित मुद्दे