0

レンダリングフォームと入力の検証を閉じてから、他のコントローラーを永続化できるかどうかを尋ねたいと思いますか? 私は以下のコード行に関係しています:

def create() {
    if(params.size() <= 2) {
        [modelInstance: new <Domain>()]
    } else {
        def model = new <Domain>(params)
        if(!model.validate()) {
            render(view:"create", model: [modelInstance: model])
            return
        } else {
            chain(action:"save", model: [modelInstance: model])
        }
    }
}

def save() {
//  where the modelInstance object was created from the create closure
    if (!modelInstance.save(flush: true)) {
        render(view: "create", model: [modelInstance: modelInstance])
        return
    }

    flash.message = "Sucess!"
    redirect(action: "show", model: [modelInstance: modelInstance])
}

注: 2 番目のクロージャーsaveには、レンダリングする .gsp ファイルがありません。それが行うのは、永続化を行い、プロセスを成功または失敗にリダイレクトすることだけです。

クロージャで最初の modelIstance を使用するsaveと、ページがエラーを返しHTTP 405ます。modelこれは、オブジェクトを見つけることができなかったが、chainメソッドを使用した結果ですか?

4

1 に答える 1

0

プライベート ヘルパー メソッドがより適切なチェーンを使用しようとしているようです。必要なロジックを両方のコントローラーで別のメソッドにカプセル化してみてください。

于 2012-09-04T14:55:56.383 に答える