2017-10-16 10 views
0

私は繭の宝石でネストされたモデルを保存しようとしています。プロジェクトのコントローラに強いパラメータコードの場合Rails 5:許容されないパラメータ

Parameters: { 
    "utf8" => "✓", 
    "authenticity_token" => "w/hwSu6yvT/R+6KFdoi7L6v3tDYJppiXyvQigBfTpD6EuTVz9P2CKImybxgip90YA0Yo7QKpID+IeCi2KLsy0g==", 
    "project" => { 
    "client" => "1", "name" => "Project 1", "instances_attributes" => { 
     "1508163439344" => { 
     "instances" => { 
      "user_id" => "user1", "password" => "[FILTERED]", "service_url" => "http://localhost:3001" 
     } 
     }, "1508163446859" => { 
     "instances" => { 
      "user_id" => "user2", "password" => "[FILTERED]", "service_url" => "http://localhost:3002" 
     } 
     } 
    } 
    }, 
    "commit" => "Create Project" 
} 

:ここでのparams JSONである私はそれを保存しようとすると、

def project_params 
    params 
    .require(:project) 
    .permit(
    :client, :name, 
    instances_attributes: Instance.attribute_names.map(&:to_sym).push(:_destroy) 
) 
end 

は今私を見せている。Unpermitted parameter: instances

を私は何をしないのですか?

+0

以下のように更新してproject_paramsあなたは単数形で、instance_attributesを試してみましたか?また、私はあなたが渡す必要があると思う:繭のためのリストにid属性が、私は確信していません –

+0

:idは 'Instance.attribute_names.map(&:to_sym)'によって処理されています –

+0

@ RajMishra私の解決策をチェックしてください。 u – krishnar

答えて

0

あなたは2つのソリューションを持っている:許可すべてのinstances_attributesコンテンツ

  • を:

    def project_params 
        params.require(:project).permit(:client, :name).permit!(:instances_attributes) 
    end 
    
  • 許可すべてinstances_attributesキー:あなたのを

    def project_params 
        instances_keys = (params[:project] || {})[:instances_attributes].keys 
        params.require(:project).permit(:client, :name, instances_attributes: instances_keys) 
    end 
    
+0

それでも' Unpermitted parameter:instances' –

0

を気づきましたparams。 instances_attributesの中に、* instancesというネストされたハッシュが再びあります。だからあなたもそれらを許可する必要があります。

def project_params 
    params 
    .require(:project) 
    .permit(
    :client, :name, 
    instances_attributes: [:instances=> Instance.attribute_names.map(&:to_sym).push(:_destroy)] 
) 
end 
+0

instances_attributesは配列ではありません。これは動作しません。 –

+0

@AntoineDewaeleコンソールをチェックインします。テスト済み – krishnar

関連する問題