On Github vlasiak / rails_controllers_presentation
Controller is the C in MVC. The controller receives the request, fetch or save data from a model and use a view to create HTML output.
When your application receives a request, the routing will determine which controller and action to run, then Rails creates an instance of that controller and runs the method with the same name as the action.
class ClientsController < ApplicationController def new end end
As an example, if a user goes to /clients/new in your application to add a new client, Rails will create an instance of ClientsController and run the new method.
class ClientsController < ApplicationController
  # The URL for this action would look like this in order to list activated
  # clients: /clients?status=activated
  def index
    if params[:status] == "activated"
      @clients = Client.activated
    else
      @clients = Client.inactivated
    end
  end
end
					
				
class PeopleController < ActionController::Base
  def create
    Person.create(person_params)
  end
  private
    
    def person_params
      params.require(:person).permit(:name, :age)
    end
end
					
				The Rails router recognizes URLs and dispatches them to a controller's action. It can also generate paths and URLs, avoiding the need to hardcode strings in your views.
Rails RoutingREST is an architecture style for designing networked applications. Every resource has its unique URI. RESTful applications use HTTP requests to post data (create and/or update), read data (e.g., make queries), and delete data. Thus, REST uses HTTP for all four CRUD (Create/Read/Update/Delete) operations. So we can manipulate that object using its URI and HTTP actions.
Practical using in RailsFilters are methods that are run before, after or "around" a controller action.
class ApplicationController < ActionController::Base
  before_action :require_login
 
  private
 
  def require_login
    redirect_to new_login_url unless logged_in?
  end
end
					
					Filters
				HTTP is as STATELESS protocol. Stateless protocol is a communications protocol that treats each request as an independent transaction that is unrelated to any previous request so that the communication consists of independent pairs of request and response.
Your application has a session for each user in which you can store small amounts of data that will be persisted between requests. The session is only available in the controller and the view.
Accessing the Session ExamplesYour application can store small amounts of data ON THE CLIENT - called cookies - that will be persisted across requests.
Accessing the Cookies ExamplesThe flash is a special part of the session which is cleared with each request. This means that values stored there will only be available in the next request, which is useful for passing error messages etc.
class LoginsController < ApplicationController
  def destroy
    session[:current_user_id] = nil
    flash[:notice] = "You have successfully logged out."
    redirect_to root_url
    #redirect_to root_url, notice: "You have successfully logged out."
  end
end
					
				
class UsersController < ApplicationController
  def index
    @users = User.all
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render xml: @users}
      format.json { render json: @users}
    end
  end
end
					
				Created by Vasyl Lasiak / @vlasiak