Suggestions on how to support user-customizable views and forms?

I’ve searched the archives and googled and can’t find much on this. I
need to allow an app admin the ability to define the layout of various
views (and eventually various forms). The admin should be able to
specify each field they want displayed and its row and column
positions. Eventually, the admin can change the field’s text label,
define it as read-only or writeable by users possessing a certain
permission, etc… but I need help with the basic approach first,
which is rendering a user-defined view.

I’m thinking the view code could look something like this:

<% = @layout.title %>

<% @layout.rows.each do |row| -%> <% row.columns do |col| -%> <% end -%> <% end -%>
<%= col.label %> <%= col.model.send(col.method) %>

The “col” object contains the field’s label, db model class name, and
model method (could be a column attribute or any model instance
The “row” object, so far, is just an array of col objects.
@layout would be constructed by the model based on definitions found
in the db.

I don’t have the db design for this yet either.

Thanks for any and all suggestions.