2016-09-03 2 views
0

긴 params 해시를 허용하고 싶습니다. strong params docs on nested params을 따르려고했지만 몇 가지 오류가 있습니다. 무엇이 잘못되었는지를 알 수 없습니다.레일에서 중첩 된 매개 변수 허용

def project_params 
    params.require(:project).permit(:name, 
            :scale, 
            :unit, 
            :colorFormat, 
            :artboards => [ 
            { 
             :layers => [ 
             { 
              :objectID, :type, :name, 
              :rect => { 
              :x, :y, :width, :height 
              }, 
              :rotation, :radius, :borders => [], :fills => [], :shadows => [], :opacity, :styleName 
             } 
             ], 
             :notes => [ 
             { 
              :rect => { 
              :x, :y, :width, :height 
              }, 
              :note 
             } 
             ], :pageName, :pageObjectID, :name, :slug, :objectID, :width, :height, :imagePath 
            } 
            ], 
            :slices => [ 
            :name, :objectID, 
            :rect => { 
             :x, :y, :width, :height 
            }, 
            :exportable => [ 
             { 
             :name, :density, :format, :path 
             } 
            ] 
            ], 
            :colors => [ 
            ] 
           ) 
end 

여기에 내가 가진 오류입니다 : 대신 ,=>을 기대 왜 그냥 배열이나 해시를 스칼라 값을 필요가 없습니다 동안

projects_controller.rb:60: syntax error, unexpected ',', expecting => 
...=> [ {:layers => [ { :objectID, :type, :name, :rect => {:x, ... 
...        ^
projects_controller.rb:60: syntax error, unexpected ',', expecting => 
...ID, :type, :name, :rect => {:x, :y, :width, :height}, :rotat... 
...        ^
projects_controller.rb:60: syntax error, unexpected ',', expecting => 
... } ], :notes => [{:rect => {:x, :y, :width, :height}, :note}... 
...        ^
projects_controller.rb:60: syntax error, unexpected ',', expecting => 
...:name, :objectID, :rect => {:x, :y, :width, :height}, :expor... 
...        ^
projects_controller.rb:60: syntax error, unexpected ',', expecting => 
...eight}, :exportable => [{:name, :density, :format, :path}], ... 
...        ^): 

모르겠어요. 여기서 내가 무엇을 놓치고 있니? 내가 가진

params.require(:project).permit(:slug, 
            :scale, 
            :unit, 
            :color_format, 
            artboards: [ 
            :page_name, :page_object_id, :name, :slug, :object_id, :width, :height, :image_path, 
            layers: [ 
             :object_id, :type, :name, :rotation, :radius, :opacity, :style_name, :font_size, :font_face, :text_align, :letter_spacing, :line_height, :content, rect: [], css: [], borders: [], fills: [], shadows: [], color: [] 
            ], 
            notes: [ 
             :note, 
             rect: [ 
             :x, :y, :width, :height 
             ] 
            ] 
            ], 
            slices: [ 
            :name, :object_id, 
            rect: [ 
             :x, :y, :width, :height 
            ], 
            exportable: [] 
            ], 
            colors: [] 
           ) 
: https://jsonblob.com/57cb9e08e4b0dc55a4f2b785

답변

3

을 : 여기

Unpermitted parameter: rect 
Unpermitted parameter: rect 
Unpermitted parameters: rect, fills 
Unpermitted parameters: rect, color 
Unpermitted parameters: rect, borders 
Unpermitted parameters: rect, color 
Unpermitted parameters: exportable, rect 

은 JSON의 샘플입니다 EDIT

는 지금은 PARAMS의 대부분을 고정 니가 그 녀석을 싸서 말한 것 같아. {}에서 mbols,

{ :objectID, :type, :name, :rect => {:x, ... 

그것이

{ :objectID => val1, :type => val2, :name => val3, :rect => {:x, ... 

같은 것을 기대하고, :objectID => some_value이 라인에서

처럼, 당신은 키와 값을 가질 필요가 의미 해시를 기대하고있다 중첩 된 매개 변수의 강력한 매개 변수 문서에서 바로 가져옵니다.

params.permit(:name, {:emails => []}, :friends => [ :name, { :family => [ :name ], :hobbies => [] }]) 

{} 안에있는 모든 항목에는 항상 키 - 값 쌍이 있습니다. {:emails => []}{ :family => [ :name ], :hobbies => [] }

+0

감사합니다. @ davidhu2000, 작동했지만 중첩 해시에 액세스 할 때이 오류가 발생했습니다. http://imgur.com/a/75et8 –

+0

제 편집을 확인하십시오. –