Обновите статус строки, используя ajax - PullRequest
2 голосов
/ 14 октября 2008

В настоящее время я пытаюсь запрограммировать свой первый интерфейс ajax с использованием Rails.

Приложение в настоящее время показывает таблицу, заполненную элементами списка. Пользователь должен одобрить или отклонить каждый из элементов списка. В настоящее время у меня есть ссылка для редактирования в конце каждой строки, которая показывает форму, в которой я могу утвердить элемент списка.

Я думаю об использовании флажка вместо ссылки на редактирование. Когда пользователь нажимает флажок, я хочу обновить базу данных, указав статус, имя пользователя и дату / время, не покидая эту страницу.

  1. Каким шагам мне следует следовать?
  2. Могу ли я использовать флажок или я ограничено кнопками?
  3. Какой помощник xxx_remote мне следует использовать?
  4. Как я могу обновить состояние флажка с результатами вызова ajax?

Ответы [ 2 ]

5 голосов
/ 14 октября 2008

Я не думаю, что флажок является правильным контролем для того, что вы ищете. Вы сказали, что хотите, чтобы пользователь мог утверждать или отклонять элементы, что означает, что у вас есть 3 состояния: необработанное, утвержденное и отклоненное. Флажок поддерживает только 2 состояния: выключено и включено

Я бы использовал две ссылки принять и отклонить, а затем сделать это следующим образом.

На ваш взгляд:

...
<tr id="item1">
  <td>Accept or Reject</td>
  <td>
    link_to_remote 'accept', :action => :accept, :id => 1, :method => :post
    link_to_remote 'reject', :action => :reject, :id => 1, :method => :post
  </td>
</tr>
...

В вашем контроллере

def accept
  item = Item.find(params[:id])
  item.accept
  respond_to do |want|
    want.js {
      render :update do |page|
        page << "$('item_#{item.id}').cells[0].innerHTML = 'Accepted'"
        ...include other updates you need to make to your row...
        page.visual_effect :highlight, "item_#{item.id}"
      end
    }
  end
end    
... similar for reject method ...
1 голос
/ 14 октября 2008

Это комментарий к решению, предложенному Эндрю,

Я должен был написать параметры функции link_to_remote, как это

link_to_remote 'reject', :url => {:action => :reject, :id => item.id, :method => :post}

Кроме того, не забудьте добавить новые действия в ваши маршруты. Rb, если вы используете отдыхающие ресурсы т.е.

map.resources :items, :member => {:accept => :post, :reject => :post}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...