2017-11-05 1 views
0

그래서 다음과 같은 매개 변수를 허용했습니다. 내 컨트롤러 액션에서레일 5 컨트롤러 동작 변경 허용

p = params.permit(:a, :b, :c, :lines => [:location_id, :quantity, :product => [:id]]) 

, 나는 lines PARAM에 내가 허용 한 데이터를 추가 할 수 있습니다.

p['lines'] << {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} 

매개 변수가 변경된 모습입니다.

puts params['lines'] 
#> [<ActionController::Parameters {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} permitted: false>] 

하지만 알 수 있듯이 허용되지 않습니다. 내가 여기서 무엇을 놓치고 있니? 나는 레일즈 5를 사용하고 있습니다.

+1

코드를 게시 할 때 줄 단위로 코드를 게시 할 수 있습니까? 왜냐하면 허가를받은 후에 해쉬에 값을 추가한다는 것을 이해하고 있기 때문입니다. 그리고 그것은 작동하지 않을 것입니다. 또한 왜 params에 뭔가를 추가해야합니까? 달성하려는 것은 무엇입니까? – spickermann

답변

0

허용 된 (허용 된) 매개 변수를 얻으려면 params이 변경 될 때마다 항상 허용 된 버전 p에 전화해야합니다.

paramsp의 차이는 params.permit(...) 자체의 허용 된 사본을 반환하고 p에 할당한다는 것입니다. 따라서 params 권한 상태는 변경되지 않습니다.

puts params['lines'] 대신 puts p['lines']으로 시도하여 원하는 결과가 나오는지 확인하십시오.