Sha256: 4f2008653dfbdbff2cd73150f8c8aba402bd132e57b29020432c64e49b43ae56

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

class ProjectsController < ApplicationController
  
  # set the selected item for the :area navigation bar
  # for all actions in this controller:
  nav_bar(:area) { |nb| nb.current = :projects }
  
  def index
    params[:sort] ||= 'recent'
    # set up tabs for the project-list view:
    nav_bar(:tabs) do |nb|
      nb.nav_item :by_alpha, projects_path(:sort => 'by_alpha')
      nb.nav_item :recent,   projects_path(:sort => 'recent')
      nb.current = params[:sort]
    end
    @projects = Project.ordered_by(params[:sort])
  end
  
  def show(selected_tab = :overview)
    @project = Project.find(params[:id])
    prepare_project_tabs selected_tab
  end
  
  def budget
    show :budget
  end
  
  def history
    show :history
  end
  
  def edit
    show :edit
  end
  
  protected
  
  # Extract navigation bar setup that is common to
  # multiple methods:
  def prepare_project_tabs(selected)
     nav_bar(:tabs) do |nb|
      nb.nav_item :overview, project_path(@project)
      nb.nav_item :budget,   budget_project_path(@project)
      nb.nav_item :history,  history_project_path(@project)
      nb.nav_item :edit,     edit_project_path(@project)
      nb.current = selected
    end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xebec-1.2.0 doc/example_app/app/controllers/projects_controller.rb
xebec-1.1.0 doc/example_app/app/controllers/projects_controller.rb