--- title: Rails category: Rails --- Helpers ------- class ApplicationController helper_method :logged_in? def logged_in? "Something" end end ### CSS/JS packages stylesheet_link_tag :monkey javascript_link_tag :monkey ### Forms # http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html - form_for @person do |f| = f.label :first_name = f.label :first_name, "First name" = f.text_field :first_name = f.label :last_name> = f.text_field :last_name> - fields_for @person.permission do |fields| = fields.checkbox :admin -# name="person[admin]" - fields_for :person, @client do |fields| = fields.checkbox :admin = f.submit # Also: check_box, email_field, fields_for # file_field, hidden_field, label, number_field, password_field # radio_button, range_field, search_field, telephonen_field, # text_area, text_field, url_field Controllers ----------- http://apidock.com/rails/ActionController/Base class ProjectsController layout 'project' # Actually defaults to `projects` based # on the controller name def save end def edit end end ### Before filter class ApplicationController < ActionController::Base before_filter :validate, only: [:save, :edit] before_filter :ensure_auth, except: [:logout] before_filter :require_login private def require_login unless logged_in? flash[:error] = "You must be logged in to access this section" redirect_to new_login_url # halts request cycle end end end ### Default URL options class ApplicationController < ActionController::Base # The options parameter is the hash passed in to 'url_for' def default_url_options(options) {:locale => I18n.locale} end end ### Hashes session[:what] flash[:notice] = "Your session expired" params[:id] ### XML and JSON 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 ### Redirection redirect_to action: 'show', id: @entry.id redirect_to root_url # a path ### Render render nothing: true render template: 'products/show' render status: 500 render status: :forbidden render text: '...' render layout: 'special_layout' render layout: false render action: 'something' # same as `file: 'my/something'` # Renders the template only, does not execute # the action render json: object render xml: object render location: photo_url(photo) ### Head-only responses head :bad_request head :created, location: photo_path(@photo) Layouts ------- # app/views/layouts/application.html.erb <%= content_for?(:content) ? yield :content : yield %> # app/views/layouts/news.html.erb <% content_for :content do %> ... <% end %> <% render template: :'layouts/application' %>