質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • Ruby

    8720questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

respond_to do |format|とはどの様な事をするのでしょうか?細かい詳細をお聞きしたく・・

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 4,645

TOKUSABU

score 46

現在Ruby_on_rails を勉強しています
主に写経のごとくコピペしてとにかく動かしていますが
コードの何たるやがわかっていません

今かいているコード
のうち、respond_to do |format|は何を意味しているかわかりませんでした
(1)espond_toとは?
(2)doはなぜつけるのか?
(3)formatはなぜここにあるか
(4)formatの両端の||はなぜこれを使うのか?
など基本がわかっていません、いろいろググりなんとなくわかるような、わからないような・
基本的な事で恐縮ですが、解説をお願いする事は可能でしょうか?

http://railsdoc.com/references/respond_toなリンク先もググればあったのですが・・

↓こんなコード書いています

 def destroy
     @comment = Comment.find(params[:id])
     @blog = @comment.blog
     respond_to do |format|
      if @comment.destroy
          format.html { redirect_to blog_path(@blog), notice: 'コメントを削除しました。' }
        # JS形式でレスポンスを返します。
        format.js { render :index }

      else
        format.html { render :new }
      end
    end
  end

ググりリンク

http://dev.classmethod.jp/server-side/rails-respond_to/
https://stackoverflow.com/questions/3543917/what-is-respond-to-and-do-and-format-in-this-rails-code

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+4

(1)espond_toとは?
ものすごく簡単に、、、
通常時ではHTML形式(いつもウェブサイト上で見る形)で結果を取得したいけど、明示的にJSON形式やXML形式を指定した場合はJSON形式やXML形式で返すようにするメソッドです。

例えば。。。

users_controller.rb

class UsersController < Application
  def show
    @user = { 'name' => 'Yamada', 'old' => '20' }

    respond_to do |format|
      format.html
      format.json { render :json => @user }
      format.xml  { render :xml => @user }
    end
  end
end

app/views/users/show.html.erb

<p>名前:<%= @user["name"] %></p>
<p>年齢:<%= @user["old"] %></p>


以上のファイルがあったとします。

http://localhost:3000/users/showへアクセスした時は、

名前: 山田
年齢: 20


のようにHTML形式で結果が返ってきます。

次に
http://localhost:3000/users/show.jsonへアクセスした場合、

{
  name: "Yamada",
  old: "20"
}


のように、JSON形式で結果が返ってきます。

http://localhost:3000/users/show.xmlへアクセスした場合は

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<hash>
  <name>Yamada</name>
  <old>20</old>
</hash>


のように、XML形式で結果が返ってきます。

以上のようにして、respond_toメソッドは、リクエストで指定されたフォーマット(HTML,JSON,XML)に合わせて結果を返すメソッドと覚えておけばいいかと思います。

(2)doはなぜつけるのか?
(3)formatはなぜここにあるか
(4)formatの両端の||はなぜこれを使うのか?

について、respond_toはブロック付きメソッド呼び出しなので、
ブロックについて調べてみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/01 10:00

    回答の程大変ありがとうございます。なるほど・・・・この様な理由があってのRESPONDなんですね。時間をかけて読まさせて頂きたいと思います。またブロックについても大変ありがとうございました!

    キャンセル

  • 2017/09/02 08:38

    RSPONDの説明ありがとうございます。非常にわかりやすいですね・・ブロックは詳しく説明されているので何度も読み直して勉強したいと思います。現在修得すべく読み直しています!

    キャンセル

  • 2017/09/02 13:15

    よかったです。
    頑張ってください。

    キャンセル

同じタグがついた質問を見る

  • Ruby

    8720questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    8122questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。