Controllers have access to HTTP parameters (you might know them as ?name=foo
in URLs, but Ruby on Rails handle different formats too!) and output different responses based on them. There isn't a way to distinguish between GET and POST parameters, but you shouldn't do that in any case.
class UsersController < ApplicationController def index respond_to do |format| format.html do if params[:name] == "john" render html: "Hello John" else render html: "Hello someone" end end end end end
As usual our route:
resources :users, only: [:index]
Access the URL /users?name=john
and the output will be Hello John
, access /users?name=whatever
and the output will be Hello someone