How to make a model or a model decorator aware of its controller in Rails?

36 views
Skip to first unread message

Alexey

unread,
Oct 4, 2012, 6:11:33 AM10/4/12
to rubyonra...@googlegroups.com
Is a decorator, like Draper, a good place to store the controller and routes associated with a given model?

I would like to be able to pass one or several model objects to a generic view, and have the view automatically generate links to the actions associated with the objects.  Like this:

link_to object.public_send(attribute),
       
{ :controller => object.controller_path,
         
:action     => :show,
         
:id         => object.id }

Thank you for any suggestions of what would be a common practice.

I have also posted this question on SO: http://stackoverflow.com/questions/12713784.

Alexey

unread,
Oct 8, 2012, 4:38:22 AM10/8/12
to rubyonra...@googlegroups.com
I will answer myself: i think a decorator is not a good place to store an associated controller, a decorator should only know about model data and HTML markup.  I am still looking for a good solution.

Matt Jones

unread,
Oct 8, 2012, 1:37:21 PM10/8/12
to rubyonra...@googlegroups.com


On Monday, 8 October 2012 01:38:22 UTC-7, Alexey wrote:
I will answer myself: i think a decorator is not a good place to store an associated controller, a decorator should only know about model data and HTML markup.  I am still looking for a good solution.

In your example, the controller path seems *highly* relevant to generating HTML markup...

--Matt Jones

Brett McHargue

unread,
Oct 8, 2012, 5:02:19 AM10/8/12
to rubyonra...@googlegroups.com
You could check out http://objectsonrails.com/ and
https://github.com/objects-on-rails/display-case - as it says, it
brings together the model and context (which could be a controller)

brett
> --
> 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 rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-ta...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/hgbZ5WKDrtgJ.
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Alexey

unread,
Oct 12, 2012, 3:24:24 AM10/12/12
to rubyonra...@googlegroups.com
Matt, i do not agree: if my application changes the host, or i decide to change route names or controller names, the link urls will change, but html tags or model behavior will not. I think controller awareness should be added on a different level, not in a decorator (single responsibility principle).

-Alexey.

Alexey

unread,
Oct 12, 2012, 3:26:00 AM10/12/12
to rubyonra...@googlegroups.com
On Monday, October 8, 2012 11:02:19 AM UTC+2, Brett McHargue wrote:
You could check out http://objectsonrails.com/ and
https://github.com/objects-on-rails/display-case - as it says, it
brings together the model and context (which could be a controller)

brett

Thanks, i'll look into it.

-Alexey. 

Alexey

unread,
Oct 13, 2012, 4:49:34 PM10/13/12
to rubyonra...@googlegroups.com
On Monday, October 8, 2012 11:02:19 AM UTC+2, Brett McHargue wrote:
You could check out http://objectsonrails.com/ and
https://github.com/objects-on-rails/display-case - as it says, it
brings together the model and context (which could be a controller)

brett
 
I do not know if i will be able to apply it to my problem, but this tutorial is very interesting and helpful, thanks.

- A.
Reply all
Reply to author
Forward
0 new messages