私はそれらをどのように使用するかを尋ねているのではなく、それらがどのように機能するかを尋ねています。私のコントローラー(私のコントローラーに足場ジェネレーターの1つを使用しただけ)にはメソッドがあります:
def index
@users = User.all
end
そのメソッドから、リクエストで「html」を指定しなくても、html レスポンス (index.html.erb) を取得するか、json レスポンス (index.json.jbuilder) を取得できます。
他の方法にはと がformat.html
ありformat.json
ます。上記のメソッドの例index
では、応答の「タイプ」への参照はありません。なぜ/どのように機能するのですか?!?
/users の要求-- 予想されるデフォルトの html
/users.html の要求-- 予想される html 応答
/users.js のリクエスト-- の html コンテンツが返されます<body>
(おそらくそれは部分的なものでしょうか?)
.js 用に指定されたテンプレートがどこにもありません。
/users.txt の要求-- 予想されるエラー メッセージが表示されます。
Missing template users/index, application/index with {:locale=>[:en], :formats=>[:text], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder]}.
/users.xml の要求-- 主なリソースの .js ハンドラーよりも xml の方が実用的なように見えますが、予想されるエラー メッセージが表示されます。
Missing template users/index, application/index with {:locale=>[:en], :formats=>[:xml], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder]}
.abc の要求がまったく処理されないのはなぜですか? それがhtmlであることを示しているわけではありませんが、それが処理方法です。
Started GET "/users.abc" ...
Processing by UsersController#index as
:handlers が指定されていることがわかりますが、.js リクエストをどのように/何を処理するかを指定するものはありません。.js リクエストがエラーを吐き出さないのはなぜですか? 地獄、これはすべて Respond_to ブロックなしでどのように機能しますか? デフォルトで html ハンドラーを期待していると思いますが、デフォルトで .json 応答を期待していません。多くの場合、すべての種類の形式を返すことができるようにしたい場合があり、HTML よりも .json 応答のみを使用したい場合もあります。これに対処するためのドキュメントはどのように/どこで見つけることができますか? これは、respond_to ブロックとはあまり関係ありません。respond_to がなくても、複数の形式の出力が得られるからです。