diff options
Diffstat (limited to 'guides')
-rw-r--r-- | guides/source/layouts_and_rendering.md | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/guides/source/layouts_and_rendering.md b/guides/source/layouts_and_rendering.md index addc0a5430..cdf3dbd77f 100644 --- a/guides/source/layouts_and_rendering.md +++ b/guides/source/layouts_and_rendering.md @@ -283,8 +283,8 @@ Calls to the `render` method generally accept four options: * `:content_type` * `:layout` -* `:status` * `:location` +* `:status` ##### The `:content_type` Option @@ -310,80 +310,80 @@ You can also tell Rails to render with no layout at all: render layout: false ``` -##### The `:status` Option +##### The `:location` Option -Rails will automatically generate a response with the correct HTTP status code (in most cases, this is `200 OK`). You can use the `:status` option to change this: +You can use the `:location` option to set the HTTP `Location` header: ```ruby -render status: 500 -render status: :forbidden +render xml: photo, location: photo_url(photo) ``` -Rails understands both numeric status codes and the corresponding symbols shown below: - -| HTTP Status Code | Symbol | -| ---------------- | -------------------------------- | -| 100 | :continue | -| 101 | :switching_protocols | -| 102 | :processing | -| 200 | :ok | -| 201 | :created | -| 202 | :accepted | -| 203 | :non_authoritative_information | -| 204 | :no_content | -| 205 | :reset_content | -| 206 | :partial_content | -| 207 | :multi_status | -| 226 | :im_used | -| 300 | :multiple_choices | -| 301 | :moved_permanently | -| 302 | :found | -| 303 | :see_other | -| 304 | :not_modified | -| 305 | :use_proxy | -| 306 | :reserved | -| 307 | :temporary_redirect | -| 400 | :bad_request | -| 401 | :unauthorized | -| 402 | :payment_required | -| 403 | :forbidden | -| 404 | :not_found | -| 405 | :method_not_allowed | -| 406 | :not_acceptable | -| 407 | :proxy_authentication_required | -| 408 | :request_timeout | -| 409 | :conflict | -| 410 | :gone | -| 411 | :length_required | -| 412 | :precondition_failed | -| 413 | :request_entity_too_large | -| 414 | :request_uri_too_long | -| 415 | :unsupported_media_type | -| 416 | :requested_range_not_satisfiable | -| 417 | :expectation_failed | -| 418 | :i'm_a_teapot | -| 422 | :unprocessable_entity | -| 423 | :locked | -| 424 | :failed_dependency | -| 426 | :upgrade_required | -| 500 | :internal_server_error | -| 501 | :not_implemented | -| 502 | :bad_gateway | -| 503 | :service_unavailable | -| 504 | :gateway_timeout | -| 505 | :http_version_not_supported | -| 506 | :variant_also_negotiates | -| 507 | :insufficient_storage | -| 510 | :not_extended | - -##### The `:location` Option +##### The `:status` Option -You can use the `:location` option to set the HTTP `Location` header: +Rails will automatically generate a response with the correct HTTP status code (in most cases, this is `200 OK`). You can use the `:status` option to change this: ```ruby -render xml: photo, location: photo_url(photo) +render status: 500 +render status: :forbidden ``` +Rails understands both numeric status codes and the corresponding symbols shown below. + +| Response Class | HTTP Status Code | Symbol | +| ------------------- | ---------------- | -------------------------------- | +| **Informational** | 100 | :continue | +| | 101 | :switching_protocols | +| | 102 | :processing | +| **Success** | 200 | :ok | +| | 201 | :created | +| | 202 | :accepted | +| | 203 | :non_authoritative_information | +| | 204 | :no_content | +| | 205 | :reset_content | +| | 206 | :partial_content | +| | 207 | :multi_status | +| | 226 | :im_used | +| **Redirection** | 300 | :multiple_choices | +| | 301 | :moved_permanently | +| | 302 | :found | +| | 303 | :see_other | +| | 304 | :not_modified | +| | 305 | :use_proxy | +| | 306 | :reserved | +| | 307 | :temporary_redirect | +| **Client Error** | 400 | :bad_request | +| | 401 | :unauthorized | +| | 402 | :payment_required | +| | 403 | :forbidden | +| | 404 | :not_found | +| | 405 | :method_not_allowed | +| | 406 | :not_acceptable | +| | 407 | :proxy_authentication_required | +| | 408 | :request_timeout | +| | 409 | :conflict | +| | 410 | :gone | +| | 411 | :length_required | +| | 412 | :precondition_failed | +| | 413 | :request_entity_too_large | +| | 414 | :request_uri_too_long | +| | 415 | :unsupported_media_type | +| | 416 | :requested_range_not_satisfiable | +| | 417 | :expectation_failed | +| | 418 | :i'm_a_teapot | +| | 422 | :unprocessable_entity | +| | 423 | :locked | +| | 424 | :failed_dependency | +| | 426 | :upgrade_required | +| **Server Error** | 500 | :internal_server_error | +| | 501 | :not_implemented | +| | 502 | :bad_gateway | +| | 503 | :service_unavailable | +| | 504 | :gateway_timeout | +| | 505 | :http_version_not_supported | +| | 506 | :variant_also_negotiates | +| | 507 | :insufficient_storage | +| | 510 | :not_extended | + #### Finding Layouts To find the current layout, Rails first looks for a file in `app/views/layouts` with the same base name as the controller. For example, rendering actions from the `PhotosController` class will use `app/views/layouts/photos.html.erb` (or `app/views/layouts/photos.builder`). If there is no such controller-specific layout, Rails will use `app/views/layouts/application.html.erb` or `app/views/layouts/application.builder`. If there is no `.erb` layout, Rails will use a `.builder` layout if one exists. Rails also provides several ways to more precisely assign specific layouts to individual controllers and actions. |