respond_with
を組み込んでコントローラをDRYしようとしています。レールケストの指示に従うと、のほとんどがになります。問題はリソースを削除した後のリダイレクトにあります... people_url
...にリダイレクトする必要がありますが、特定のリソースを読み込もうとします。Rails 3:respond_withを使用してリソースを削除する適切な方法
私はこのようなルックスを見つけた...しかし、それはそれだけで削除されたリソースをロードしようと失敗したサンプルコード:
# 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
これを処理する正しい方法ですか? respond_withの背後にあるすべての '魔法'で、削除後に自分自身にリダイレクトできないことがわかるでしょうか?私はまた、これ(7つの基本的なRESTful CRUDメソッドのうちの1つ)がかなり基本的で初歩的なので、多くの例がたくさんあると考えました...しかし、私は多くのものを見つけることができませんでした私。
誰かを願って、ここで発生しているレールの魔法を理解するのを助けることができるので、これが私に爆発して驚くことはありません。
ありがとう、悲しいことに、私はまだ混乱しています。あなたは 'respond_with(head:ok)'を提案していますか?それはうまくいかないからです。私は 'respond_to'ブロックの中で' format.xml {head:ok} 'に慣れています。この場合、 'respond_with'を使用してどのように動作させるのかは分かりません。 – Meltemi
@Meltemi - Ryan BatesのASCIICastをチェックしてください:http://asciicasts.com/episodes/224-controllers-in-rails-3 – dennismonsewicz