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

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

新規登録して質問してみよう
ただいま回答率
85.44%
Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

2662閲覧

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

TOKUSABU

総合スコア87

Ruby

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

Ruby on Rails

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

0グッド

3クリップ

投稿2017/08/31 15:35

現在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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(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 00:11

Ryuto

総合スコア206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TOKUSABU

2017/09/01 01:00

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

2017/09/01 23:38

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

2017/09/02 04:15

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問