この記事の対象
respond_toがよくわからなくてとりあえずググった人
構成
・respond_toのできる事
・使い方
respond_toのできる事
def destroy
@tweet = Tweet.find(params[:id])
respond_to do |format|
if @tweet.destroy
format.html { redirect_to root_path }
#root_pathへリダイレクトする
format.js { render :action => "index" }
#.index.html.erbで作成されたものをjson形式で表示する。
end
end
end
destroy action が呼び出された時、formatがhtmlで指定されていたらroot_pathにリダイレクト、jsonで指定されていたらindex.html.erbをindex.html.jsで返す
どうやって使うか
respond_to do |format|
format.html
format.js { @user }
end
こんな感じで、処理の終わりを指定されたformatにより変更できるように書きます。
書き方は
format.形式 { 行いたい処理の内容 }
です。
上記の例だと、何も処理を書かなければデフォルトのテンプレートが指定されたフォーマットで表示されます。
format.jsを使用した例だと、@userの情報をjson形式で返します(もちろんアクション内で@userの情報を取得しておく必要があります。)
最後に
難しかったので、間違ってるとこあれば指摘ください。