class PollController < ApplicationController before_filter :find_poll_and_course, :only => [:edit,:update,:destroy] before_filter :find_container, :only => [:new,:create, :index] before_filter :is_member_of_course, :only => [:index,:show] before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy] def index if @course @is_teacher = User.current.allowed_to?(:as_teacher,course) @polls = Poll.where("polls_type = 'Course' and polls_group_id = #{@course.id}") respond_to do |format| format.html{render :layout => 'base_courses'} end elsif @project #项目的问卷调查相关代码 end end def show @poll = Poll.find params[:id] end def new if @course option = { :polls_name => l(:label_poll_new), :polls_type => @course.class.to_s, :polls_group_id => @course.id, :polls_status => 1, :user_id => User.current.id, :published_at => Time.now, :closed_at => Time.now, :polls_description => "" } @poll = Poll.create option if @poll respond_to do |format| format.html{render :layout => 'base_courses'} end end elsif @project #项目的问卷调查相关代码 end end def create end def edit end def update @poll.polls_name = params[:polls_name] if @poll.save respond_to do |format| format.html { redirect_to poll_index_url(:polls_type => @course.class.to_s, :polls_group_id => @course.id) } end else end end def destroy if @poll && @poll.destroy respond_to do |format| format.js end end end private def find_poll_and_course @poll = Poll.find params[:id] @course = Course.find @poll.polls_group_id rescue Exception => e render_404 end def find_container if params[:polls_type] && params[:polls_group_id] case params[:polls_type] when "Course" @course = Course.find_by_id params[:polls_group_id] when "Project" @project = Project.find_by_id params[:polls_group_id] end else render_404 end end def is_member_of_course render_403 unless(@course && User.current.member_of_course?(@course)) end def is_course_teacher render_403 unless(@course && User.current.allowed_to?(:as_teacher,course)) end end