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&#91;test&#93;" 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?