Rails 4: кнопка Ajax для подписки пользователей не отвечает

Итак, у меня есть приложение rails 4, и я попытался реализовать систему Follow/Unfollow между пользователями, следуя главе 11 учебник по рельсам

Но когда я нажимаю кнопку "Следовать" - ничего не происходит, как будто метод AJAX не работает.

app/controllers/relationships_controller.rb

class RelationshipsController < ApplicationController
  before_action :signed_in_user

  def create
    @user = User.find(params[:relationship][:followed_id])
    current_user.follow!(@user)
    respond_to do |format|
      format.html { redirect_to @user }
      format.js
    end
  end

  def destroy
    @user = Relationship.find(params[:id]).followed
    current_user.unfollow!(@user)
    respond_to do |format|
      format.html { redirect_to @user }
      format.js
    end
  end
end

И для вызова метода Follow/Unfollow Ajax я использую это:

приложение/представления/отношения/create.js.erb

$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>")
$("#followers").html('<%= @user.followers.count %>')

приложение/представления/отношения/destroy.js.erb

$("#follow_form").html("<%= escape_javascript(render('users/follow')) %>")
$("#followers").html('<%= @user.followers.count %>')

У меня есть правильный идентификатор, установленный в моей форме подписки,

<% unless @user == current_user %>
  <div id="follow_form">
  <% if current_user.following?(@user) %>
    <%= render 'unfollow' %>
  <% else %>
    <%= render 'follow' %>
  <% end %>
  </div>
<% end %>

Ошибка из консоли javascript:

POST http://localhost:3000/relationships 500 (Internal Server Error) jquery.js?body=1:9667
send jquery.js?body=1:9667
jQuery.extend.ajax jquery.js?body=1:9212
$.rails.rails.ajax jquery_ujs.js?body=1:81
$.rails.rails.handleRemote jquery_ujs.js?body=1:157
(anonymous function) jquery_ujs.js?body=1:364
jQuery.event.dispatch jquery.js?body=1:4625
elemData.handle jquery.js?body=1:4293

Любые идеи о том, откуда эта ошибка? Спасибо


person zacchj    schedule 07.08.2014    source источник
comment
Можете ли вы опубликовать ajax js?   -  person rneves    schedule 07.08.2014
comment
Хм @meves, извините, что вы подразумеваете под AJAX js? это вопрос в разделе destroy.js.erb и create.js.erb   -  person zacchj    schedule 07.08.2014
comment
Видите ли вы что-нибудь в журнале сервера, когда вы нажимаете кнопки?   -  person bobomoreno    schedule 07.08.2014
comment
Также проверьте консоль Javascript вашего браузера на наличие ошибок.   -  person bobomoreno    schedule 07.08.2014
comment
Я отредактировал свой вопрос с ошибкой, которую я получил из консоли javascript.   -  person zacchj    schedule 07.08.2014


Ответы (1)


Являются ли эти листинги кода прямыми копиями вашего кода или набраны вручную?

Я думаю, что у меня была такая же проблема. В моем случае я, наконец, проследил это до файла create.js.erb.

приложение/представления/отношения/create.js.erb

$( "#follow_form" ).html( "<%= escape_javascript( render( 'users/unfollow' ) ) %>" )
$( "#followers" ).html( "<%= @users.followers.count %>" )

Проблема заключалась во втором вызове строки @users.followers, который должен быть @user.followers

ХТН

person michaelreeves    schedule 10.10.2014