2013-04-08 2 views
0

Простой вопрос, но я ничего не могу найти в Интернете, чтобы предложить, как это сделать ... Я хочу, чтобы контроллер запускал проверку jQuery на простой таблице html на экране, прежде чем запускать обновление но я не могу понять, как бы я это сделал, любые идеи?Grails работает jquery в контроллере

Я попытался запустить проверку внутри jQuery, а затем передал значение, которое мне нужно, для действия обновления, используя пост jquery, но это не сработало, когда я проверил параметры, которые он не выглядел, когда я запускаю только регулярное обновление ...

Проблема заключается в том, что у меня есть множество отношений, которые в настоящее время обновляются при добавлении в мой список или обновлении значений в списке, но в минуту я нужно удалить один, с которым я столкнулся с трудностями, то, что я хотел сделать, это получить подсчет таблицы html (которая содержит список связанных элементов), а затем сравнить ее с базой данных, если в таблице меньше, чем в таблице базы данных Я собирался запустить базовое удаление из sql, чтобы очистить теперь избыточные связанные элементы ...

Единственное, что я не могу решить, - это как получить этот счет таблицы во время работы контроллера или вызвать контроллер и передать в этот номер таблицы (ну, я могу вызвать действие и передать n номер таблицы и идентификатор но это, похоже, теряет все остальные параметры), я думал, что def formInstance = Form.get(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) 

    } 

В PARAMS предоставляемые через регулярные сохранить кнопка выглядит так: - [ID: 3, formDesc: форма 3, события [1]. id: 2, события [1]: [id: 2], _action_update: обновление, события [0] .id: 2, события [0]: [id: 2], версия :, action: index, controller: form]

Но через JQuery, как так [ID: 14, Минт: 1, действие: обновление, контроллер: форма]

Резюмируя я думаю й Проблема с сохранением, но я не могу решить, как ее исправить. Например, если я начну с «формой» с 3 «событиями», а затем удалить один из этих событий из таблицы затем сохранить его в PARAMS выглядеть такой: -

[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] 

Как вы можете видеть теперь только два события (0 и 1) отображаются, и они обновляются, как я хочу, но третье событие, которое больше не отображается в параметрах, не удаляется из таблицы ссылок, как я хочу.

Единственный способ, которым я могу думать, это получить размер таблицы с экрана, а затем сравнить его с количеством сохраняемых событий и выполнить ручное удаление SQL до или после сохранения, но я не могу работать как это сделать ...

+0

Самый простой способ, я могу думать, это удалить все отношения и вставить только значения, отмеченные пользователем. Если вы не хотите этого делать, вам нужно проверить экземпляры, которые существуют в базе данных, и сравнить их со значениями, отмеченными пользователем. Если вы выберете второй вариант, разместите свое мнение, чтобы узнать, как значения пришли в 'params'. –

+0

Я думал об удалении всех значений из базы данных, надеясь, что функция сохранения просто добавит их обратно, но когда я попробую, чтобы она завершилась с ошибкой, читайте «Пакетное обновление возвратило неожиданный счетчик строк из обновления [0]; фактическое количество строк: 0; Ожидаемый: 1 – MorkPork

+0

Итак, разместите свой контроллер и просмотрите код, который поможет понять вашу проблему. –

ответ

0

Я был придурком, параметры уже дали мне список того, сколько текущих событий у меня было сейчас, по какой-то причине он не щелкнул, что я мог просто получить номер новых параметров из этого списка, я могу запустить простой кусок sql, чтобы удалить все ненужные события! slaps лба

Смежные вопросы