Skip to content

Instantly share code, notes, and snippets.

@nwjsmith
Created October 19, 2010 16:10
Show Gist options
  • Save nwjsmith/634467 to your computer and use it in GitHub Desktop.
Save nwjsmith/634467 to your computer and use it in GitHub Desktop.
- form_for interviewer do |f|
= f.error_messages
= f.label :name, "What is their name?"
= f.text_field :name
#languages
= f.label :languages, "What languages do they speak?"
- f.fields_for :speaks_language do |language_fields|
%ul
- Language.all.each do |language|
%li
%label
= language.name
= language_fields.check_box language.id, checkbox_attributes(interviewer, language), true, false
= f.submit submit_label
or
= link_to "Cancel", :back, :class => "cancel"
%h1= @interviewer.name
= render :partial => "form", :locals => { :interviewer => @interviewer, :submit_label => "Update interviewer"}
%h1 Interviewers
%p= link_to 'Add an interviewer', new_interviewer_path
- if @interviewers.present?
%table#interviewers
%tr
%th Name
%th Languages
%th Action
- @interviewers.each do |interviewer|
%tr
%td= interviewer.name
%td= interviewer.languages_list
%td
= link_to "Manage time slots", interviewer_time_slots_path(interviewer)
\/
= link_to "Edit", edit_interviewer_path(interviewer)
\/
= link_to "Delete", interviewer_path(interviewer), :method => :delete, :class => "cancel"
- else
%p.notice
Please
= link_to "add the first interviewer.", new_interviewer_path
class InterviewersController < ApplicationController
include CalendarFunctions
before_filter :ip_lockdown if ENV['RAILS_ENV'] == 'production'
before_filter :find_interviewer, :only => [:show, :edit, :update, :destroy]
def index
@interviewers = Interviewer.all
end
def show
end
def new
@interviewer = Interviewer.new
end
def create
@interviewer = Interviewer.new(params[:interviewer])
if @interviewer.save
flash[:notice] = "Interviewer was created successfully."
redirect_to @interviewer
else
render :action => "new"
end
end
def edit
end
def update
if @interviewer.update_attributes(params[:interviewer])
flash[:notice] = "Interviewer was updated successfully."
redirect_to interviewer_path(@interviewer)
else
render :action => "edit"
end
end
def destroy
@interviewer.destroy
flash[:notice] = "Interviewer was successfully destroyed."
redirect_to interviewers_path
end
def report
Time.zone = 'Eastern Time (US & Canada)'
@calendar = calendarize_14_days
@slots = prepare_calendar(0) do |start_time, end_time|
TimeSlot.scoped({:include => [{:interviewer => :languages}, :bookings]}).between(start_time, end_time)
end
end
private
def find_interviewer
@interviewer = Interviewer.find(params[:id])
end
end
require 'test_helper'
class InterviewersControllerTest < ActionController::TestCase
context "on GET to :new" do
setup { get :new }
should assign_to :interviewer
should respond_with :success
should render_template :new
should_not set_the_flash
end
context "on POST to :create with a valid interviewer" do
setup do
@valid_attributes = Factory.attributes_for(:interviewer)
post :create, :interviewer => @valid_attributes
end
should redirect_to("the interviewer's page") {
interviewer_path(assigns(:interviewer))
}
should set_the_flash.to "Interviewer was created successfully."
end
context "on POST to :create with an invalid interview" do
setup do
@invalid = Factory.attributes_for(:interviewer, :name => nil)
post :create, :interviewer => @invalid
end
should render_template :new
end
context "on POST to :edit" do
setup do
@interviewer = Factory(:interviewer)
post :edit, :id => @interviewer.to_param
end
should assign_to :interviewer
should respond_with :success
should render_template :edit
should_not set_the_flash
end
context "on PUT to :update with a valid interviewer" do
setup do
@interviewer = Factory(:interviewer)
valid_attributes = Factory.attributes_for(:interviewer)
put :update, :id => @interviewer.id, :interviewer => valid_attributes
end
should redirect_to("the interviewer's page.") { interviewer_path(@interviewer) }
should set_the_flash.to "Interviewer was updated successfully."
end
context "on PUT to :update with an invalid interviewer" do
setup do
@interviewer = Factory(:interviewer)
put :update, :id => @interviewer.id, :interviewer => { :name => nil }
end
should render_template :edit
end
context "on DELETE to :destroy an interviewer" do
setup do
@interviewer = Factory(:interviewer)
delete :destroy, :id => @interviewer.id
end
should(redirect_to("the interviewers list.") { interviewers_path })
should set_the_flash.to "Interviewer was successfully destroyed."
end
context "on GET to :index" do
setup { get :index }
should assign_to :interviewers
should respond_with :success
should render_template :index
should_not set_the_flash
end
context "on GET to :show" do
setup do
interviewer = Factory(:interviewer)
get :show, :id => interviewer.id
end
should assign_to(:interviewer)
should respond_with(:success)
should render_template(:show)
should_not set_the_flash
end
end
class LanguagesController < ApplicationController
def index
@languages = Language.all
end
def new
@language = Language.new
end
def create
@language = Language.new(params[:language])
if @language.save
flash[:notice] = "Language added successfully"
redirect_to languages_path
else
render :new
end
end
def edit
@language = Language.find(params[:id])
end
def update
@language = Language.find(params[:id])
if @language.update_attributes(params[:language])
flash[:notice] = "Language updated successfully"
redirect_to languages_path
else
render :edit
end
end
end
require 'test_helper'
class LanguagesControllerTest < ActionController::TestCase
context "on GET to :index" do
setup { get :index }
should respond_with(:success)
should render_template(:index)
should assign_to(:languages)
end
context "on GET to :new" do
setup { get :new }
should respond_with(:success)
should render_template(:new)
should assign_to(:language)
end
context "on POST to :create" do
context "with valid attributes" do
setup do
@valid_attrs = Factory.attributes_for(:language)
post :create, :language => @valid_attrs
end
should redirect_to("languages path") { languages_path }
should set_the_flash.to("Language added successfully")
end
context "with invalid attributes" do
setup do
@valid_attrs = Factory.attributes_for(:language, :interview_length => "INVALID")
post :create, :language => @valid_attrs
end
should render_template(:new)
should_not set_the_flash
end
end
context "on GET to :edit" do
setup do
@language = Factory(:language)
get :edit, :id => @language.id
end
should respond_with(:success)
should render_template(:edit)
should assign_to(:language)
end
context "on PUT to :update" do
context "with valid attributes" do
setup do
@language = Factory(:language)
@valid_attrs = Factory.attributes_for(:language)
put :update, :id => @language.id, :language => @valid_attrs
end
should redirect_to("languages list page") { languages_path }
should set_the_flash.to("Language updated successfully")
end
context "with invalid attributes" do
setup do
@language = Factory(:language)
@invalid_attrs = Factory.attributes_for(:language, :interview_length => "INVALID")
put :update, :id => @language.id, :language => @invalid_attrs
end
should render_template(:edit)
end
end
end
%h1 New Interviewer
= render :partial => "form", :locals => { :interviewer => @interviewer, :submit_label => "Create interviewer"}
%table
%tr
%th
Time
[email protected] do |date|
%th=date.strftime("%a %b %d")
[email protected] do |time, slots|
%tr
%td
=time
-slots.each do |slot_hash|
%td
- if slot_hash[:slot].empty?
&nbsp;
- else
-slot_hash[:slot].each do |slot|
%div
="#{slot.interviewer.name} (#{slot.interviewer.languages_list})"
=slot.application_for_time slot_hash[:start], slot_hash[:end]
%h1= @interviewer.name
%p=link_to "Edit", edit_interviewer_path(@interviewer)
%h2 Spoken languages
- if @interviewer.languages.present?
%ul
- @interviewer.languages.each do |language|
%li= language.name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment