Rails + JQuery: невозможно обновить содержимое диапазона с помощью Ajax-запроса. - PullRequest
0 голосов
/ 16 февраля 2011

У меня возникли проблемы с использованием Ajax-запроса в экосистеме Rails + JQuery.Что я хочу сделать, это обновить содержимое диапазона с ответом на запрос AJAX, когда я нажму на ссылку.

Вот интересная часть моего взгляда:

<div class="field">
<%= f.label "Avatar (laissez vide pour utiliser votre gravatar)" %><br />
<span id="avatar">
    <%= gravatar_for @user %>
</span><br />   
<%= link_to "Editer votre gravatar", "http://www.gravatar.com/emails", :target => :_blank %><br />
<%= f.file_field :avatar %>
<%= link_to "Supprimer avatar", "/users/new/delete_avatar?id=#{@user.login}", :remote => true, :confirm => "Etes-vous sur?" %>

Моя цель - обновить интервал с идентификатором «аватар» при нажатии на последнюю ссылку.Вот код, который получает запрос:

  def delete_avatar
        user = User.find_by_login(params[:id])
        user.avatar.destroy
        respond_to do |format|
            format.html { redirect_to edit_user_path @user }
            format.js
        end
  end

А вот файл delete_avatar.rb.js, который вызывается response_to:

$("#avatar").html("<%= gravatar_for @user %>");

Теперь, когда я нажимаю насвяжите и используйте инструмент анализа запросов Firebug, который я получаю как запрос GET, с кодом состояния 304 или 200 в зависимости от того, является ли содержимое таким же, как раньше, или нет, со следующим содержимым:

$("#avatar").html("<img alt="foobar" class="gravatar" src="http://gravatar.com/avatar/f3ada405ce890b6f8204094deb12d8a8?size=150&amp;default=http%3A%2F%2Fskullslab.elhu.me%2Fimages%2Fskl_avatar.png" />");

Кажется, это то, чего я ожидаю, но я не знаю почему, содержание страницы не изменилось.

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

PS: JQuery правильно загружен в мое приложение, так как я могу обновитьсодержимое диапазона при нажатии на ссылку, когда я не пытаюсь использовать AJAX.

1 Ответ

0 голосов
/ 17 февраля 2011

Вам понадобится javascript для экранирования вашего garatar_for в коде rails, например:

$("#avatar").html("<%= escape_javascript gravatar_for @user %>");

Проблема в том, что у вас есть qoutes (") в вашей строке, и это делает javascript недопустимым.

Также, возможно, будет хорошей идеей посмотреть эту маленькую отличную заставку RailsCasts по рельсам и jQuery. Он упоминает об этом в этом эпизоде: http://railscasts.com/episodes/136-jquery

Надеюсь, это поможет вам

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