Rails Request parameters
params
post data <form method=”POST”>
query data ?key1=valu1&key2=value2
root parameter /abc/def
Receive data as params
def para render text: 'parameter: ' + params[:id] end
array
?/category[]=ruby&category[]=swift
def para_array render text: 'category : ' + params[:category].inspect end
hash
<form>
<div class="field">
<label for="test">Test</label>
<input id="test" name="item[test]" type="text"/>
</div>
</form>
hash
params[:item]
StrongParams
Prevent mass assignment vulnerability
def create @item = Item.new(item_params) end def item_params params.require(:item).permit(:title, :price, :date) end
require model name and permit are params
If you do following, error has occurred.
@item = Item.new(params[:item])
Setting for StrongParameters
All parameters are allowed(config.rb)
config.action_controller.permit_all_parameters
Not assumed parameter operation setting
config.action_controller.acton_on_unpermitted_parameters
The default is :log for development
:log : Log
:raise : raise ActionController::UnpermittedParameters
Headers
headers : Request Header
- Accept
- Accept-Language
- Authorization
- Host
- Referer
- User-Agent
Get headers(request.headers)
def req_head render text: request.headers['User-Agent'] end
Save as parameter
@headers = request.headers
headers method has not only header info but also server env
- GATEWAY_INTERFACE
- QUERY_STRING
- PATH_INFO
- REMOTE_ADDR
- REMOTE_HOST
- REQUEST_METHOD
- REQUEST_URI
- SERVER_NAME
- SERVER_PORT
- SERVER_PROTOCOL
- SERVER_SOFTWARE
Special method of request
Example)
request.accepts
| Method | Description |
|---|---|
| accepts | |
| authorization | |
| body | |
| content_length | |
| fullpath | |
| get?, post?, put?, patch?, delete?, head? | |
| host | |
| host_with_port | |
| local? | |
| method | |
| port | |
| port_stringprotocol | |
| remote_ip | |
| request_method | |
| request_uri | |
| scheme | |
| server_software | |
| ssl? | |
| standard_port? | |
| url | |
| xml_http_request? |
