2017-10-29 8 views
1

npmパッケージadmin-on-restを使用して、elixir/phoenix REST APIバックエンドのバックオフィスを構築しています。編集コンテキストと更新コンテキストを分離する方法

私の質問/:ID(show action)は、以下のフラットなJSON構造を返します。

{ 
    id: 7 
    content: "<p> Question content here</p>" 
    points: 300 
    title: "Question title" 
} 

をそして、私のupdate actionが質問を更新するための入力として、次のネストされたJSONを期待:

{ 
    id: 7 
    question: { 
    content: "<p>New question content</p>" 
    points: 400 
    title: "New question title" 
    } 
} 

私の問題はドット表記と関連していますadmin-on-rest

私は私のバックオフィス内editアクションを表現するために、次のJSコードを使用する場合は

export const QuestionEdit = (props) => (
    <Edit title={<QuestionTitle />} {...props}> 
    <SimpleForm> 
     <DisabledInput source="question.id" /> 
     <TextInput source="question.title" /> 
     <LongTextInput source="question.content"/> 
     <TextInput source="question.points" /> 
    </SimpleForm> 
    </Edit> 
) 

私はPUT要求ペイロード内の正しいデータを持っていますが、(スクリーンショットを参照してください「編集」フォーム入力でレンダリングは値が存在しません1)

enter image description hereenter image description here

およびI)が平坦ソース値と(JSコードの他の変形例を使用する場合は:

export const QuestionEdit = (props) => (
    <Edit title={<QuestionTitle />} {...props}> 
    <SimpleForm> 
     <DisabledInput source="id" /> 
     <TextInput source="title" /> 
     <LongTextInput source="content"/> 
     <TextInput source="points" /> 
    </SimpleForm> 
    </Edit> 
) 

は、 "編集" フォーム内のすべての以前の入力値が正しく表現が、PUT要求ペイロードは

enter image description here enter image description here


はそのIと仮定すると、(スクリーンショット2を参照)、私のupdate作用によって解析することはできませんバックエンドAPIを変更したくない場合(フェニックスコードジェネレータによって自動生成されるため)、JSコードを編集して2つの目標を達成する方法 - 以前の値を正しく表示する(ページを編集する) updateのために提供されるアクション

あなたの注意のために事前に多くの感謝!

答えて

2

カスタムactionをご覧ください。基本的に、フォームは平坦化されたデータでレンダリングされるため、使用すると正しく表示されるのはなぜですか(idtitleなど)。次に、そのデータをサーバーに変換する前にそのデータを変換する必要があります。PUT

関連する問題