所以我在RelationshipController
:
class RelationshipsController < ApplicationController
before_filter :authenticate_user!
respond_to :json
def create
user = User.find(params[:user_to_follow_id])
relationship = current_user.follow!(user)
respond_with user
end
def destroy
user = User.find(params[:id])
current_user.unfollow!(user)
logger.debug user.id
respond_with user
end
end
现在,当我使用创建操作时,我会使用respond_with user
方法获得回复,该方法也使用ActiveModel::Serializer
进行了很好的格式化。
当我使用destroy方法时,我得到一个完全空白的响应。它似乎与render json: {user: user, status: 201}
一起使用,但我想知道为什么我不能将respond_with
用于它们?他们发回的用户在两种情况下都具有相同类型的数据。
取消关注方法:
def unfollow!(user)
$redis.multi do
$redis.srem(self.redis_key(:following), user.id)
$redis.srem(user.redis_key(:followers), self.id)
end
end
答案 0 :(得分:1)
看起来你正在碰到action_controller / responder.rb的默认响应
# File actionpack/lib/action_controller/metal/responder.rb, line 203
def api_behavior(error)
raise error unless resourceful?
raise MissingRenderer.new(format) unless has_renderer?
if get?
display resource
elsif post?
display resource, :status => :created, :location => api_location
else
head :no_content
end
end
如果您正在回复收据或帖子,那么预计会有一些内容回来,否则只是一个头,没有内容。默认情况下,您刚删除了一个关系,因此无法返回任何内容。如果你想回复一个用户以回复删除关系,那么我认为你必须制定自己的回复(你的渲染子语句)。