所以我有一个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
有关此错误来自哪里的任何想法?感谢
答案 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