Ajax按钮不再在Rails应用程序中更新

温斯顿

我在Michael Hartl的Rails教程中实现了“关注”功能。它可以正常工作数月,但是现在按钮一旦退出,突然变得不再更新。我没有任何Javascript错误,也没有在Rails控制台中得到任何错误。单击该按钮将成功创建/销毁“关系”。当我再次尝试单击按钮时,我仅在Rails控制台中收到错误,因为它正在尝试重做事务。

我确实预编译了我的资产,但这从来都不是问题。我一直都会对我的资产进行预编译,然后将应用程序推到Heroku上,然后按钮就可以正常工作了。我最近实现的唯一更改是添加了simple_form和haml-rails gem,以使邮箱gem正常工作。我不确定它们是否相关,但我认为这可能有助于调试。

这个中断是如何发生的,我该如何解决?谢谢!

相关代码:

控制器:

class RelationshipsController < ApplicationController

  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

按照表格

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

跟随

<%= form_for(current_user.relationships.build(followed_id: @user.id),
             remote: true) do |f| %>
  <div><%= f.hidden_field :followed_id %></div>
<%= f.submit "Follow", class: "btn btn-primary btn-small" %>
<% end %>

取消关注

<%= form_for(current_user.relationships.find_by_followed_id(@user),
             html: { method: :delete },
             remote: true) do |f| %>
<%= f.submit "Unfollow", class: "btn btn-primary btn-small" %>
<% end %>

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

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.

//= require bootstrap
//= require jquery
//= require jquery-ui
//= require jquery.tokeninput
//= require_tree .

我曾经//= require jquery_ujs在application.js中使用过,但是我必须将其删除,因为单击“跟随”按钮将导致单击发生两次。删除该行解决了该问题,但是Ajax似乎不再更新按钮了,我不知道为什么。

编辑:

Rails控制台确实显示正在接收请求。我什至可以刷新页面,然后按钮将更新:

Started DELETE "/relationships/32" for 127.0.0.1 at 2014-01-13 21:35:37 -0500
Processing by RelationshipsController#destroy as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"---edited---", "commit"=>"Unfollow", "id"=>"32"}
  Relationship Load (0.4ms)  SELECT "relationships".* FROM "relationships" WHERE "relationships"."id" = $1 LIMIT 1  [["id", "32"]]
  User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 2 LIMIT 1
  User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  Relationship Load (0.4ms)  SELECT "relationships".* FROM "relationships" WHERE "relationships"."follower_id" = 1 AND "relationships"."followed_id" = 2 LIMIT 1
   (0.1ms)  BEGIN
  SQL (0.3ms)  DELETE FROM "relationships" WHERE "relationships"."id" = $1  [["id", 32]]
   (1.5ms)  COMMIT
  Rendered users/_follow.html.erb (2.5ms)
   (0.7ms)  SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."follower_id" WHERE "relationships"."followed_id" = 2
  Rendered relationships/destroy.js.erb (6.0ms)
Completed 200 OK in 17.4ms (Views: 8.0ms | ActiveRecord: 4.2ms)

Javascript控制台在Chrome中根本不显示任何错误。

编辑2我的网络标签:

Chrome Javascript控制台中的“网络”标签

温斯顿

找到了问题。<div id="follow_form">在以下表单上丢失了

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

谢谢大家的帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ALT + TAB不再在Ubuntu 19.04中的应用程序下对Windows进行分组

来自分类Dev

Edge不再在后台应用程序列表中

来自分类Dev

退出应用程序和构造函数不再在Windows Phone 8上调用

来自分类Dev

Rails应用程序上的AJAX按钮

来自分类Dev

Rails应用程序上的AJAX按钮

来自分类Dev

Ruby on Rails应用程序中的后退按钮跳过页面

来自分类Dev

chrome打包的应用程序自cca 0.0.9起就不再在Android上加载xhr图像

来自分类Dev

chrome打包的应用程序自cca 0.0.9起就不再在Android上加载xhr图像

来自分类Dev

Ajax:成功无法在Rails应用程序中工作

来自分类Dev

Ajax未在Rails应用程序中渲染局部

来自分类Dev

Ajax未在Rails应用程序中渲染局部

来自分类Dev

Ionic CLI 更新后应用程序不再工作

来自分类Dev

要求来自宝石的资产不再在Rails 4.2中工作

来自分类Dev

为什么 $(window).on('beforeunload', callback); 更新到 73.0.3683.103 后不再在 Chrome 中触发我的 ajax 调用?

来自分类Dev

为何Ubuntu中不再提供许多AppShowdown应用程序?

来自分类Dev

Windows 10中的32位应用程序不再启动

来自分类Dev

在Rails应用程序中使用AJAX无需使用表单即可更新模型字段

来自分类Dev

角度应用程序中的滚动按钮

来自分类Dev

重用WFP应用程序中的按钮

来自分类Dev

Android应用程序中按钮的大小

来自分类Dev

应用程序iOS中的徽章按钮

来自分类Dev

动态移动应用程序中的按钮

来自分类Dev

在Codeigniter中使用Ajax在我的Web应用程序中的“喜欢”按钮中需要帮助

来自分类Dev

如何基于Rails on Rails 4应用程序中的答案更新数据库列

来自分类Dev

在Rails应用程序中单击“添加对象”按钮时,使用Jquery显示表单

来自分类Dev

数据网格,实体框架WPF应用程序中的“更新”按钮

来自分类Dev

Rails 4.0.12应用程序中的StackLevelTooDeep

来自分类Dev

在Rails应用程序中运行JavaScript

来自分类Dev

在Minikube中调试Rails应用程序

Related 相关文章

  1. 1

    ALT + TAB不再在Ubuntu 19.04中的应用程序下对Windows进行分组

  2. 2

    Edge不再在后台应用程序列表中

  3. 3

    退出应用程序和构造函数不再在Windows Phone 8上调用

  4. 4

    Rails应用程序上的AJAX按钮

  5. 5

    Rails应用程序上的AJAX按钮

  6. 6

    Ruby on Rails应用程序中的后退按钮跳过页面

  7. 7

    chrome打包的应用程序自cca 0.0.9起就不再在Android上加载xhr图像

  8. 8

    chrome打包的应用程序自cca 0.0.9起就不再在Android上加载xhr图像

  9. 9

    Ajax:成功无法在Rails应用程序中工作

  10. 10

    Ajax未在Rails应用程序中渲染局部

  11. 11

    Ajax未在Rails应用程序中渲染局部

  12. 12

    Ionic CLI 更新后应用程序不再工作

  13. 13

    要求来自宝石的资产不再在Rails 4.2中工作

  14. 14

    为什么 $(window).on('beforeunload', callback); 更新到 73.0.3683.103 后不再在 Chrome 中触发我的 ajax 调用?

  15. 15

    为何Ubuntu中不再提供许多AppShowdown应用程序?

  16. 16

    Windows 10中的32位应用程序不再启动

  17. 17

    在Rails应用程序中使用AJAX无需使用表单即可更新模型字段

  18. 18

    角度应用程序中的滚动按钮

  19. 19

    重用WFP应用程序中的按钮

  20. 20

    Android应用程序中按钮的大小

  21. 21

    应用程序iOS中的徽章按钮

  22. 22

    动态移动应用程序中的按钮

  23. 23

    在Codeigniter中使用Ajax在我的Web应用程序中的“喜欢”按钮中需要帮助

  24. 24

    如何基于Rails on Rails 4应用程序中的答案更新数据库列

  25. 25

    在Rails应用程序中单击“添加对象”按钮时,使用Jquery显示表单

  26. 26

    数据网格,实体框架WPF应用程序中的“更新”按钮

  27. 27

    Rails 4.0.12应用程序中的StackLevelTooDeep

  28. 28

    在Rails应用程序中运行JavaScript

  29. 29

    在Minikube中调试Rails应用程序

热门标签

归档