Ответ Rails 3 ajax не выполняется - PullRequest
1 голос
/ 28 июля 2011

Я создаю простую функцию AJAX в своем приложении, где пользователь может увеличить количество лайков по ссылке.

Мне удалось получить ссылку для запуска кода моего контроллера, и браузер получил ответ, но ответ не выполнен.

Ссылка "Мне нравится" частично:

.likes                      
  .like_up                                                                  
    = link_to( image_tag('/images/thumb_up.png'), '/like/' + question.id.to_s, :remote => true)
  #like_count
    = 22# question.likecount                                                
  .like_down
    = link_to( image_tag('/images/thumb_down.png'), '/dislike/' + question.id.to_s, :remote => true)

И это входит в likes_controller:

def up
  @like = current_user.likes.create( :question_id => params[:question_id], :like => true )
  respond_to do |format|
    format.js
  end
end

Тогда в моем up.js.haml у меня просто есть отладочный javascript:

alert('2');

и ничего больше.

Когда я нажимаю ссылку "аналог" в браузере, журнал рельсов сообщает мне, что он сделал js.haml

...
Rendered likes/up.js.haml within layouts/application (104.9ms)
Completed 200 OK in 923ms (Views: 116.3ms | ActiveRecord: 20.1ms)

И когда я смотрю на ответ, который получает браузер, он, безусловно, выглядит как up.js.haml, отображаемый в макете моего приложения, в котором размещается тег yield.

  <div class='content'>
    alert('2');
  </div>

Я подозреваю, что это не то, что браузер хочет вернуть. Также при просмотре консоли firebug во время запроса ajax ничего не происходит после отправки запроса.

Может кто-нибудь узнать, почему это не работает? Все учебники и руководства, которые я нашел, делают это так же, как и здесь.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Во-первых, убедитесь, что тип содержимого указан правильно:

curl --head -X POST http://localhost:8080/....

Я считаю, что Content-Type должно быть text/javascript

Во-вторых, я думаю, что вы хотите отключить макеттак что DIV не появляется на выходе.

def up
  @like = current_user.likes.create( :question_id => params[:question_id], :like => true )
  respond_to do |format|
    format.js { render :partial => 'up', :layout => false }
  end
end

Или, возможно, отключите его во всем контроллере с помощью

layout false
0 голосов
/ 25 марта 2013

Это случилось со мной в простой удаленной форме.

Работал после перезапуска сервера, даже если это была среда разработки.

Надеюсь, я спасу кого-то за час, который я потратил.

С уважением.

...