【发布时间】:2014-09-30 17:42:42
【问题描述】:
所以我有一个 rails 4 应用程序,我尝试按照 rails tutorial 的第 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 方法:
app/views/relationships/create.js.erb
$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>")
$("#followers").html('<%= @user.followers.count %>')
app/views/relationships/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
关于这个错误来自哪里的任何想法?谢谢
【问题讨论】:
-
可以发下ajax js吗?
-
嗯@meves,对不起,AJAX js 是什么意思?它在destroy.js.erb和create.js.erb下的问题中
-
当您按下按钮时,您是否在服务器日志中看到任何内容?
-
同时检查浏览器的 Javascript 控制台是否有任何错误
-
我用 javascript 控制台的错误编辑了我的问题
标签: jquery ruby-on-rails ajax ruby-on-rails-4.1