I''ve got an application that will have a handful of lookup tables. To be clear by this I mean tables that only have two attributes, id, name and are used to provide drop-down lists for other tables/forms so that these fields have "standard" values. I need 5 to 10 of these tables. I''m a ruby/rails neophyte but I''ve read Agile Web Devel with Rails, Rails Recipes, Adv Rails Recipes so I think I understand the basics but this has me stumped. The models/views/controllers for all these lookup tables are identical. I would think there would be a way to have 1 Controller (e.g. LookupController) 1 set of views (in directory /lookups) and a model for each lookup table. Then the Lookup controller would (possibly with a before_filter) figure out which lookuptable I want to edit (possibly with a route such as (lookup/:model) where :model would be the name of the lookup table I want to edit. Can anyone point me to either some documentation or provide hints on how to do this sort of thing cleanly? Below is the code I''m playing around with.... thanks in routes I''ve got # lookups/CollectionType/lookups #lookups/Gender/lookups map.resources :lookups, :path_prefix => ''lookups/:mdl'' ex Lookup Controller class LookupsController < ApplicationController # GET /lookup # GET /lookup.xml before_filter :setup_tables def index @lookups = @theModel.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @lookups } end end # GET /lookup/1 # GET /lookup/1.xml def show @lookup = @theModel.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @lookup } end end # GET /lookup/new # GET /lookup/new.xml def new @lookup = @theModel.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @lookup } end end # GET /lookup/1/edit def edit @lookup = @theModel.find(params[:id]) end # POST /lookup # POST /lookup.xml def create @lookup = @theModel.new(params[:lookup]) respond_to do |format| if @lookup.save flash[:notice] = ''Lookup value was successfully created.'' format.html { redirect_to(@lookup,:mdl=>@mdl) } format.xml { render :xml => @lookup, :status => :created, :location => @lookup } else format.html { render :action => "new" } format.xml { render :xml => @lookup.errors, :status => :unprocessable_entity } end end end # PUT /lookup/1 # PUT /lookup/1.xml def update @lookup = @theModel.find(params[:id]) respond_to do |format| if @lookup.update_attributes(params[:lookup]) flash[:notice] = ''Lookup was successfully updated.'' format.html { redirect_to(@lookup,:mdl=>@mdl) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @lookup.errors, :status => :unprocessable_entity } end end end # DELETE /lookup/1 # DELETE /lookup/1.xml def destroy @lookup = @theModel.find(params[:id]) @lookup.destroy respond_to do |format| format.html { redirect_to(lookups_url, :mdl=>@mdl) } format.xml { head :ok } end end private def setup_tables # I assume there is some way to instantiate a class with a string name but I did this # just to try to get something working if params[:mdl] == "CollectionType" @mdl = params[:mdl] @theModel = CollectionType else if params[:mdl] == "Gender" @mdl = params[:mdl] @theModel = Gender end @lookupTbl = @theModel.find(:all) end end --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---