0

十分に単純な質問ですが、その方法を提案するものをオンラインで見つけることができません...コントローラーが更新アクションを実行する前に、画面上の単純なhtmlテーブルでjQueryチェックを実行したいのですが、どうすればよいかわかりません.やりますか、何かアイデアはありますか?

jQuery内でチェックを実行してから、必要な値をjquery投稿を使用して更新アクションに渡してみましたが、まったく機能しませんでした.paramsをチェックすると、実行したときのようには見えませんでしたただの定期更新…

問題は、現在、リストに追加するとき、またはリスト内の値を更新するときに問題なく更新される多対多の関係セットを持っていることですが、問題に遭遇したものを削除する必要がある分、私がやりたかったことはhtmlテーブル(リンクされたアイテムのリストを含む)の数を取得し、それをデータベースと比較します。データベースよりもテーブルの方が少ない場合は、SQLから基本的な削除を実行して、リンクされたアイテムが冗長になりました...

私が解決できない唯一のことは、コントローラーの実行中にこのテーブルカウントを取得する方法、またはコントローラーを呼び出してこのテーブル番号を渡す方法です(アクションを呼び出してテーブル番号とIDを渡すことはできますが、これは他のすべてのパラメーターを失います)、すべてのパラメーターdef formInstance = Form.get(id)を取得できると思っていましたが、まったくそうではないようです:(

または、ID が手元にある場合、パラメータを再入力する別の方法はありますか?

どんな助けでも大歓迎です!:)

更新コントローラーは次のようになります。

def update(Long id) {
        def formInstance = Form.get(id)
        int eventCount = formInstance.events.collect().count{id};

        if (!formInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'form.label', default: 'Form'), id])
            redirect(action: "list")
            return
        }

        formInstance.properties = params

        if (!formInstance.save(flush: true)) {
            render(view: "edit", model: [formInstance: formInstance])
            return
        }

        int neweventCount = formInstance.events.collect().count{id};
        println(neweventCount)  


        flash.message = message(code: 'default.updated.message', args: [message(code: 'form.label', default: 'Form'), formInstance.id])
        redirect(action: "show", id: formInstance.id)

    }

通常の保存ボタンで提供されるパラメータは次のようになります: - [id:3, formDesc:form 3, events[1].id:2, events[1]:[id:2], _action_update:Update, events[0 ].id:2、イベント[0]:[id:2]、バージョン:、アクション:インデックス、コントローラー:フォーム]

しかし、[id:14, myInt:1, action:update, controller:form] のような jQuery を介して

要約すると、問題は保存にあると思いますが、それを修正する方法がわかりません。たとえば、3 つの「イベント」を含む「フォーム」から開始し、これらのイベントの 1 つをテーブルから削除して保存すると、パラメータは次のようになります。

[id:1, formDesc:form 112, events[1].id:1, events[1]:[id:1], _action_update:Update, events[0].id:1, events[0]:[id:1], version:, action:index, controller:form]

ご覧のとおり、2 つのイベント (0 と 1) のみが表示されており、必要に応じて更新されていますが、params に表示されなくなった 3 番目のイベントはリンク テーブルから削除されていません。欲しいです。

これを回避する唯一の方法は、画面からテーブル サイズを取得し、それを現在保存されているイベントの数と比較し、保存の前後に手動で SQL 削除を行うことですが、その方法がわかりません。これ...

4

1 に答える 1

0

私はばかでした.paramsはすでに私が現在持っている現在のイベントの数のリストを私に与えていました.何らかの理由で、そのリストから新しいparamsの数を導出するだけでクリックできませんでした.不要になったすべてのイベントを削除するには、SQL の一部を削除します。額を叩く

于 2013-04-09T08:38:49.843 に答える