我试图通过合并respond_with
来干掉控制器。当我这样做时,遵循Railscast中的一些说明,我得到的东西主要是工作。问题在于删除资源后的重定向...应该重定向到people_url
...而是尝试加载特定资源。
我找到的示例代码看起来像这样......但是它尝试加载刚刚删除的资源失败了:
# app/controllers/people_controller.rb
class PeopleController < ApplicationController
respond_to :html, :xml
def destroy
@person = Person.find(params[:id])
flash[:notice] = 'Successfully deleted person.' if @person.destroy
respond_with(@person) # <== spec fails here
end
end
将最后一行更改为respond_with(@people)
也不起作用(虽然我希望它会......)
经过多次挖掘并尽力了解事情,我确实让事情变得有效(至少看起来如此。规格传递.app功能)用这个:
respond_with(@person, :location => people_url) # <== now it works
那么,这是处理这个问题的正确方法吗?似乎有了所有'魔法'背后的response_with它会知道删除后它不能重定向到自己?我也认为这个(7种基本的RESTful CRUD方法之一)将是非常基本和基本的,所以很多例子会比比皆是......但我找不到很多,除了那些暗示代码不起作用的代码我。
希望有人能帮助我理解这里发生的铁轨'魔力'所以当我在路上爆炸时,我不会感到惊讶。
答案 0 :(得分:5)
您正在尝试使用已删除的资源进行回复。这就是问题所在。在删除等情况下,仅限标题的响应有效。将请求标头状态设置为:ok
就足够了。
head :ok