23086


いまtwitterのようなサイトを作っています。  
他の人のコードを参考にしていると、`show` メソッドの所に

[code]

    respond_to do |format|
      format.js
      format.html
    
[/code]

というコードが書いてありました。

`format.js`、`format.html` のような他のファイルを呼びださなければならないときはいつなのですか？そして、 `|format|`
は引数ですよね？ここの `format` は変数のような、”数”ではないと解釈しているのですが、どうして引数設定しているのでしょうか？


CC BY-SA 3.0
2016-03-12T07:46:59.250
23054
2016-03-13T08:49:42.183
2016-03-12T11:14:21.477
76
14754
question
ruby-on-rails
railsでの引数設定の疑問


元はRailsのscaffoldが作成したcontrollerに含まれるこのコードだと思います。

[code]

    respond_to do |format|
      format.html { redirect_to users_url, notice: 'User was successfully destroyed.' }
      format.json { head :no_content }
    end
    
[/code]

`format.html`とか`format.json`というのは、ファイル名ではありません。`format`変数に格納されているオブジェクトの`html`や`json`と言ったメソッドの呼び出しです。`なんとか.new`とか`なんとか.save`とかが出てきたと思いますが、それと同じです。

これはクライアントが要求している応答形式(HTMLやJSON)に応じて応答内容を設定するコードになります。

`format`(名前に意味は無いのですが)はブロックパラメータやブロック引数と呼ばれるものです。

[code]

    method {|i| ... }
    method do |i|
      ...
    end
    
[/code]

これらは同じ事なのですが、`{}`や`do ...
end`はブロックと呼ばれる言語構造で、`method`は内部でこのブロックをメソッドのように呼び出すように書かれているはずです。その時にブロックにパラメータを渡すのにこのブロック引数が使われます。詳しくは[リファレンスマニュアル](http://docs.ruby-
lang.org/ja/2.3.0/doc/spec=2fcall.html)を参照してください。


CC BY-SA 3.0
2016-03-13T08:49:42.183
23086
2016-03-13T08:49:42.183
5793
23054
answer