を組み込んでコントローラーを乾かそうとしてい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)も機能しません(私はそれが機能することを望んでいましたが...)
多くのことを掘り下げて理解するために最善を尽くした後、私はこれで物事を機能させることができました(少なくともそれはそう見えるでしょう。仕様は合格です。アプリは機能します):
respond_with(@person, :location => people_url) # <== now it works
それで、これはこれを処理する正しい方法ですか?reply_withの背後にあるすべての「魔法」を使用すると、削除後に自分自身にリダイレクトできないことがわかりますか?また、これ(7つの基本的なRESTful CRUDメソッドの1つ)はかなり基本的で初歩的なものであるため、多くの例がたくさんあると思いました...しかし、機能しなかったコードを示唆するものを除いて、多くを見つけることができませんでした自分。
誰かがここで起こっているレールの「魔法」を理解するのを手伝ってくれることを願っています。そうすれば、これが道を進んで私に吹き飛ばされても驚かないでしょう。