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? |