Проблемы с JQuery Ajax-функциями - PullRequest
0 голосов
/ 16 июля 2011

Мне нужна помощь с моим jquery, которая должна выполнить задачу в нашем приложении Rails3.Спасибо другим здесь, у меня есть флажок, который при нажатии должен пометить статус задачи как выполненный.

В моем коде рельсов у меня есть это;

<%= check_box_tag 'complete_task_1', '', false, { 'href' => completed_task_path(task.id) } %>

В моемapplication.js, я начал с этого:

 $('#complete_task_1').click(function() {
  $.ajax({
    url: $(this).data('href'),
    type: 'post',
    dataType: 'html',
    success: function(data, textStatus, jqXHR) {
        $('#thing').css("color","red");
        alert ('yabadabadoo');
    }
  });
});

Это дает мне ошибку, хотя - нет совпадений с маршрутом для / tasks

Чтобы проверить, я заменил URL на:

tasks/4/complete

Который переключал статус в БД, но не обновлялся на странице.Поэтому у меня есть два вопроса:

  1. Что не так с указанным выше URL / функцией?
  2. Что можно включить, чтобы задача исчезла со страницы без перезагрузки?

- ОБНОВЛЕНИЕ -

Попробовал использовать код в соответствии с предложением @ darin-dimitrov, приведенным ниже, и я вышел из приложения ... Ошибка, показанная в журнале разработки:

Started POST "/tasks" for 127.0.0.1 at 2011-07-16 13:27:32 +0100
  Processing by TasksController#create as HTML
  SQL (143.6ms)  describe `roles_users`
  User Load (0.5ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  SQL (0.2ms)  BEGIN
  SQL (0.6ms)  COMMIT
Completed   in 454ms

Похоже, он все еще не получает правильный URL.Должен ли я также использовать POST?

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Прежде всего, обратите внимание, что $ (). Data () отличается от $ (). Attr ().

Читать эту статью для более.

На рубиновой стороне вы, вероятно, добавляете атрибут href к флажку - верно? (я не в рубине)

Не пытайтесь получить доступ к атрибуту с помощью $ (). Data () - это НЕ правильно.

Сначала попробуйте жестко закодировать URL-адрес в свойстве url и посмотреть, работает ли он. Если да - тогда просто проблема в том, что вы не можете получить доступ к href на флажке. Попробуйте $().attr().

Вы также можете использовать атрибут rel вместо href - это стандартный атрибут для флажков. Но href должен делать то же самое.

1 голос
/ 16 июля 2011

Попробуйте это:

{ 'data-href' => completed_task_path(task.id) }

и затем:

url: $(this).data('href')

должен дать правильный URL (tasks/4/complete).

Или, если вы не используете префикс data-, вы можете использовать это:

url: $(this).attr('href')

но поскольку href не является допустимым атрибутом для флажка, первое решение кажется лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...