instead of using a decorator, why don''t you implement it as a module
and
then mix it into ActiveRecord::Base? That way, any existing model classes
you have will obtain the datagrid functionality.
On 3/7/06, Esad Hajdarevic <esad.nospam@esse.at>
wrote:>
> Hi!
>
> I''m thinking of implementing datagrid like functionality for
showing
> data (models) in grids so that I don''t have to re-invent the
> view/controller for each table I need. There are number of parameters
> that need to be customizable: column titles, row style depending on the
> data (i.e. showing all rows with balance<0 in red), is column sortable,
> sort-algorithm etc.
>
> To me, putting this parametrization in model like i.e. scaffold
> extension does (fields like @scaffold_fields, @scaffold_*) isn''t
the
> right choice, as these parameters have more to do with "visual
model"
> than with data model, so I was thinking of creating app/decorators/ and
> putting these visual models into separate classes (decorators) there
> i.e.
>
> class OrdersDecorator < ActiveRecord::Decorator
>
> The base class (AR::Decorator), each decorator would becom instance
> variable @model, which could be used to refer to original model, and
> this could happen automagically depending on the class name. There would
> be some default functions, like field_title that would return humanized
> column descriptions (i.e. order_status -> Order status)
>
> This is how one such decorator could look like
>
> class OrdersDecorator < ActiveRecord::Decorator
> @datagrid_fields=%w(id, name, country)
>
> def datagrid_field_title_id
> "Order ID"
> end
>
> def datagrid_row_style(m)
> ''big-order'' if m.total>100
> end
>
> def sort_country(a,b,direction)
> return a.continent<b.continet #sort countries by continent, not by
> name
> end
> end
>
> What do you think?
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Rails mailing list
> Rails@lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://wrath.rubyonrails.org/pipermail/rails/attachments/20060307/8fbc78f9/attachment.html