【问题标题】:Rails 4: Ajax button for follow users doesn't respondRails 4:关注用户的 Ajax 按钮没有响应
【发布时间】: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


【解决方案1】:

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

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

app/views/relationships/create.js.erb

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

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

HTH

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2018-07-21
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多