modified for hw3
[slick.rotten.hw2.git] / app / controllers / movies_controller.rb
blobde91b4c30c704b2d8c6c467b2d46b071592d67c3
1 class MoviesController < ApplicationController
3   def show
4     id = params[:id] # retrieve movie ID from URI route
5     @movie = Movie.find(id) # look up movie by unique ID
6     # will render app/views/movies/show.<extension> by default
7   end
9   def index
10     #logger.info params.inspect
12     if !params[:ratings] && !params['sort-by'] && !params['commit'] && session['index-params']
13       ss = session['index-params']
14       session['index-params'] = nil
15       return redirect_to movies_path(ss)
16     end
18     session['index-params'] = {
19       :ratings  => params[:ratings],
20       'sort-by' => params['sort-by']
21     }
23     @filters = {}
25     @ratings = params[:ratings]
27     find_params = {}
29     if params[:ratings]
30       params[:ratings].each_key { |k| @filters[k] = true }
31       find_params[:conditions] = { :rating => params[:ratings].keys }
32     end
33       
34     case params['sort-by']
35       when 'title'
36         @hilite_title = true
37         find_params[:order] = 'title'
38       when 'release_date'
39         @hilite_release_date = true
40         find_params[:order] = 'release_date'
41     end
43     @movies = Movie.all(find_params)
45     @all_ratings = Movie.select(:rating).map { |x| x.rating }.uniq      # TODO: issue SELECT DISTINCT
47   end
49   def new
50     # default: render 'new' template
51   end
53   def create
54     @movie = Movie.create!(params[:movie])
55     flash[:notice] = "#{@movie.title} was successfully created."
56     redirect_to movies_path
57   end
59   def edit
60     @movie = Movie.find params[:id]
61   end
63   def update
64     @movie = Movie.find params[:id]
65     @movie.update_attributes!(params[:movie])
66     flash[:notice] = "#{@movie.title} was successfully updated."
67     redirect_to movie_path(@movie)
68   end
70   def destroy
71     @movie = Movie.find(params[:id])
72     @movie.destroy
73     flash[:notice] = "Movie '#{@movie.title}' deleted."
74     redirect_to movies_path
75   end
77 end