people.csv
次のコードは、テキストをレンダリングする代わりにファイルを返します。Respond_to ブロックを使用せずにテキストをレンダリングするだけの場合、ブラウザは期待どおりに動作します。ブラウザがファイルでデータを送信するように強制するのは何ですか? 予想どおり、MIME タイプは「text/csv」です。
# /app/controllers/people_controller.rb
class PeopleController < ApplicationController
def index
respond_to do |format|
format.csv { render text: "Hello, world" }
end
end
end
結果:テンプレートを使用して適切に登録された MIME タイプである xls をレンダリングすると、application.html が強制的にレンダリングされます。これは私には非常に奇妙に見えます。
# /app/controllers/people_controller.rb
class PeopleController < ApplicationController
def index
respond_to do |format|
format.xls
end
end
end
.
# /app/views/people/index.xls.erb
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<% @people.each do |person| %>
<tr>
<td><%= person.id %></td>
<td><%= person.name %></td>
</tr>
<% end %>
</table>