There would be at least a couple of options, depending on how you want to implement the themes and how much they should differ from one another.
One would be to use the same views for the actions but have a different layout for each client. You could then use a method in your controller to select the appropriate layout:
class MyController < ApplicationController
layout :select_layout
def my_action
Perform action here
end
private
Say we have a field in our table defining the layout for the client
def select_layout
@client = Client.find() // whatever your query is
layout = @client.layout
end
end
See the documentation for the layout method at:
http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html#M000129
Alternatively you could look at a theming engine like liquid: http://home.leetsoft.com/liquid
James.