<% module_namespacing do -%> class <%= controller_class_name %>Controller < ApplicationController # Attribute used for search (change if needed) SEARCH_ATTR = "name" # GET <%= route_url %> # GET <%= route_url %>.json def index condition = "#{SEARCH_ATTR} like ?" @<%= plural_table_name %> = <%= class_name %>.where(condition, "%#{params[:search]}%") .page(params[:page]).order(sort_column + " " + sort_direction).per_page(10) @sort_direction = sort_direction @sort_column = sort_column respond_to do |format| format.html # index.html.erb format.json { render <%= key_value :json, "@#{plural_table_name}" %> } end end # GET <%= route_url %>/1 # GET <%= route_url %>/1.json def show @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> respond_to do |format| format.html # show.html.erb format.json { render <%= key_value :json, "@#{singular_table_name}" %> } end end # GET <%= route_url %>/new # GET <%= route_url %>/new.json def new @<%= singular_table_name %> = <%= orm_class.build(class_name) %> respond_to do |format| format.html # new.html.erb format.json { render <%= key_value :json, "@#{singular_table_name}" %> } end end # GET <%= route_url %>/1/edit def edit @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> end # POST <%= route_url %> # POST <%= route_url %>.json def create @<%= singular_table_name %> = <%= orm_class.build(class_name, "params[:#{singular_table_name}]") %> respond_to do |format| if @<%= orm_instance.save %> format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully created.'" %> } format.json { render <%= key_value :json, "@#{singular_table_name}" %>, <%= key_value :status, ':created' %>, <%= key_value :location, "@#{singular_table_name}" %> } else format.html { render <%= key_value :action, '"new"' %> } format.json { render <%= key_value :json, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> } end end end # PUT <%= route_url %>/1 # PUT <%= route_url %>/1.json def update @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> respond_to do |format| if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %> format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully updated.'" %> } format.json { head :ok } else format.html { render <%= key_value :action, '"edit"' %> } format.json { render <%= key_value :json, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> } end end end # DELETE <%= route_url %>/1 # DELETE <%= route_url %>/1.json def destroy @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> @<%= orm_instance.destroy %> respond_to do |format| format.html { redirect_to <%= index_helper %>_url, <%= key_value :notice, "'#{human_name} deleted.'" %> } format.json { head :ok } end end private def sort_column <%= class_name %>.column_names.include?(params[:sort]) ? params[:sort] : SEARCH_ATTR end def sort_direction %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc" end end <% end -%>