рельсы и JQuery: сценарий отображается вместо выполнения - PullRequest
1 голос
/ 17 сентября 2009

У меня небольшие проблемы с использованием jQuery в Rails.

Я бы хотел вызвать метод destroy для определенного элемента списка, а затем удалить его из списка через ajax. Мой код довольно прост:

# _web_profile.html.erb - The partial containing the link to destroy:
<%= link_to 'Remove', web_profile, :method => :delete, :class => 'remove_button' %>

# The ajax hijacking
$('.remove_button').live('click', function() {
  $.ajax({ type: 'delete', url:  this.href });
  return false;
});

# In my controller
format.js { render(:update) { |page| page.remove "web_profile_#{id}" } }

Ладно, вот и все. Когда я нажимаю кнопку, все работает нормально, но вместо выполнения скрипта я получаю текстовый вывод в браузере:

# Browser output
try {
  jQuery("#web_profile_12").remove();
} catch (e) { 
  alert('RJS error:\n\n' + e.toString()); 
  alert('jQuery(\"#web_profile_12\").remove();'); throw e 
}

Есть идеи, почему этот красивый код JavaScript не выполняется? Я уже пытался добавить dataType к запросу ajax.

Спасибо и всего наилучшего, Джо

Ответы [ 2 ]

0 голосов
/ 17 сентября 2009

Вы должны либо установить тип "script" в вызове $. Ajax () , либо заменить этот вызов на $. GetScript () .

0 голосов
/ 17 сентября 2009

Почему для «type» установлено значение «delete»? Должно быть установлено значение «POST», а dataType - «script». Из-за проблем совместимости браузеров необходимо использовать обходной путь, чтобы указать действие как удаление RESTful. Для данных должен быть установлен параметр "_method" "удалить".

Я предлагаю установить jrails и использовать link_to_remote и другие помощники Rails. Они генерируют правильный код JS. Таким образом, вы можете узнать, как создавать правильные Ajax-запросы Rails.

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