Rails 4:跟随用户的Ajax按钮没有响应

时间:2014-08-07 13:01:30

标签: jquery ruby-on-rails ajax ruby-on-rails-4.1

所以我有一个rails 4应用程序,我尝试在用户之间实现Follow / Unfollow系统,遵循rails tutorial的第11章

但是当我点击跟随按钮时 - 没有任何反应,就像AJAX方法不起作用。

应用/控制器/ 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 %>')

我在我的关注表单中设置了正确的ID,

<% 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

有关此错误来自哪里的任何想法?感谢

1 个答案:

答案 0 :(得分:0)

这些代码清单是直接从您的代码中复制还是手动输入?

我想我遇到了同样的问题。 就我而言,我最终将其追溯到create.js.erb文件。

应用/视图/关系/ create.js.erb

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

问题是对@users.followers的第二行调用,应该是@user.followers

HTH