gpt4 book ai didi

jquery - RailsTutorial 11.2.5 Ajax 调用未返回成功

转载 作者:行者123 更新时间:2023-12-01 05:57:42 25 4
gpt4 key购买 nike

11.2.5部分在 Railstutorial(.org) 的 Rails 3.2 版本中,我无法让所有的https://relationships_controller_spec.rb 测试通过,即用于创建和销毁关系的“应该成功响应”方法。尽管使用了所提供代码的精确副本(复制和粘贴),但仍然如此。收到的消息预期成功?返回 true,得到 false

如果有某种相关性,我的关注/取消关注按钮不会在网络浏览器中更新,但我可以通过激活 app/assets/javascripts/中的 = require jquery 来修复此问题application.js(尽管教程文本中似乎没有提到此步骤)。在此修复之前,不会呈现关联的 create.js.erb 和 destroy.js.erb 操作。

现在应用程序似乎正在工作,包括ajaxified关注/取消关注按钮(它们都在屏幕上更新并按预期修改关系)。尽管如此,提到的两个 rspec 测试仍然失败。我已经分析了服务器日志,但到目前为止还没有给我任何线索。

relationships_controller_spec.rb

require 'spec_helper'

describe RelationshipsController do

let(:user) { FactoryGirl.create(:user) }
let(:other_user) { FactoryGirl.create(:user) }

before { sign_in user }

describe "creating a relationship with Ajax" do

it "should increment the Relationship count" do
expect do
xhr :post, :create, relationship: { followed_id: other_user.id }
end.to change(Relationship, :count).by(1)
end

it "should respond with success" do
xhr :post, :create, relationship: { followed_id: other_user.id }
response.should be_success
end
end

describe "destroying a relationship with Ajax" do

before { user.follow!(other_user) }
let(:relationship) { user.relationships.find_by_followed_id(other_user) }

it "should decrement the Relationship count" do
expect do
xhr :delete, :destroy, id: relationship.id
end.to change(Relationship, :count).by(-1)
end

it "should respond with success" do
xhr :delete, :destroy, id: relationship.id
response.should be_success
end
end
end

relationships_controller.rb

class RelationshipsController < ApplicationController
before_filter :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

可以在 https://github.com/spinnn/testapp 找到该应用程序存储库

我注意到了

Button doesn't update in Ajax - Rails Tutorial 3 at §12.2.5

但是这个讨论似乎不适用于本例(它还涉及 Rails 3.0 而不是 Rails 3.2 版本的教程)。

我已经采取了多次重新启动网络服务器以及重置、重新填充和重新准备数据库的步骤,但问题没有得到任何解决。

我在 OS X 上使用 ruby​​ 1.9.3p286 和 Rails 3.2.8。任何有关解决此问题的建议将不胜感激。

最佳答案

好吧,是时候害羞了。克隆 Railstutorial/sample_app_2nd_ed.git 后,我​​找到了解决此问题的非常直接的解决方案。关系_controller.rb 已被复制,在 app/controllers/中有一个副本,在 spec/controllers/中也有一个(冗余)副本。不幸的是,我一直在尝试调试的版本是冗余版本,而真正的版本不完整。捂脸。也许是一个警示故事。

关于jquery - RailsTutorial 11.2.5 Ajax 调用未返回成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com