HTTP_REFERER is an HTTP header set by the browser in the request containing the the address of the previous web page from which a link to the currently requested page was followed. It will not be set when directly navigating to a page.
REQUEST_URI (also available via request.request_uri()
)is the Uniform Resource Identifier used to access the Rails controller/action and should always be set.
Throw this debugging code into your view:
<ul>
<% request.env.each do |item| %>
<li><%= item[0] %> : <%= item[1] %></li>
<% end %>
</ul>
If HTTP_REFERER is not set, make sure you are navigating to that page via a link or redirect and see if it is set then.
There is also a chance your browser is not setting the HTTP_REFERER header. Be sure you do not have an add-on affecting this. You can use a nifty Firefox add-on called Tamper Data to see the headers being sent.