I'm sure there are some solid ideas out there for designing universal controllers, but I wanted to share my design which seems to work well. I'll post all the code on gist.github.com for reading.
Here is the code: https://gist.github.com/1100923 => example_controller.rb I call a set_tables before filter to supply what tables are valid with the controller. If you have 12 different tables/models that will use the default actions of this controller, you can list the tables in the @tables array. The default index action is fairly simple as well. The action first checks to see if the database table is part of the valid @tables array, and if not, it redirects the user to the root of the site and posts a simple notice. Otherwise, if valid, it will begin to assign the data to the @data instance variable. The @data instance variable structures how the model will be referenced by taking the params (as an example let's say you pass 'example_model'. The structure of the line would look like this: ExampleModel.list_data The list_data method is built in your model. Once the data is assigned, the index view just renders @partial which is equal to the table_index parameter. So, in this example, it will look for _example_model.html.erb. This allows you to setup partials to represent the index action for each table. Lastly, the routes.rb file will basically setup a default match for: http://yourdomain.com/example/:table_index where :table_index becomes the parameter passed to your controller. So, in our example, the url will look like: http://yourdomain.com/example/example_model which you can assign to any link_to using "default_table_path('example_model')"... Pretty simple and fairly clean. Enjoy. -- Posted via http://www.ruby-forum.com/. -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

