Forum: Ruby on Rails calling a partial from within a model / model's method?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0df56f2edb0d80e81c5c0ef1ca91690e?d=identicon&s=25 Joel Oliveira (Guest)
on 2008-11-24 03:32
(Received via mailing list)
Hey everyone,

I have a model I extended w/STI to allow me to write little widgets or
modules for my web-app ... that part's working well.   However, I'm
getting
to the point where, depending on the model's type/class I would like to
render a partial so that each type has it's own look/feel/content.

I found this :
http://www.compulsivoco.com/2008/10/rendering-rail.....
and it works pretty well.  I had all my models calling their own
partials, but, helper functions like link_to and url_for, etc, will not
work.  As mentioned in the comments to that blog post

> Love the tip, *it breaks though when your view code uses helper methods*,
> to do this, I stole from Rails internal private method,
> initialize_template_class:
>
> template_instance =
> ActionView::Base.new(Rails::Configuration.new.view_path)
> template_instance.extend ApplicationController.master_helper_module
> content = template_instance.render(:partial => self.view_path(self.profile)
> + '/show', :locals => {:item => self})
>
I tried this, but am still not having any luck.

Has anyone tried this sort of thing before?  I'm trying to do a simple
link_to  for a nested resource (which works fine within the context of a
straight view, but I get this when calling the partial from my model(s)

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for

Thanks everyone!

- Joel
49de4cd2f26705785cbef2b15a9df7aa?d=identicon&s=25 Nick Hoffman (nickh)
on 2008-11-24 03:39
(Received via mailing list)
On Nov 23, 9:31 pm, "Joel Oliveira" <joel.olive...@gmail.com> wrote:
> work.  As mentioned in the comments to that blog post
>
>
> - Joel

Hi Joel. I'm not quite sure why you want to render partials or
templates from within your model(s). I'm sure you have some good
reasons, but sometimes there're ways of accomplishing what you want
without violating the "rules" of the MVC design pattern.

Would you mind explaining in more detail why your model(s) need to
render partials and/or templates?

Cheers,
Nick
0df56f2edb0d80e81c5c0ef1ca91690e?d=identicon&s=25 Joel Oliveira (Guest)
on 2008-11-24 14:38
(Received via mailing list)
Hey Nick!

First - thanks for the reply.

Second - the reason why I'm trying to do this is to allow whatever type
of
widget model I'm creating to render its own particular partial, in the
context of the "area" a user will place it - header, footer, sidebar,
etc.
I thought that calling a helper to weed out the objects for a particular
"area" and then letting the model call its partial on its own, would be
the
easier way to do it, despite the normal MVC rules.  I know it's against
the
rules - so I'm wondering if there's an easier way?

Any input would be appreciated! :)

Thanks!

- Joel
49de4cd2f26705785cbef2b15a9df7aa?d=identicon&s=25 Nick Hoffman (nickh)
on 2008-11-24 17:42
(Received via mailing list)
On 2008-11-24, at 08:37, Joel Oliveira wrote:
> the normal MVC rules.  I know it's against the rules - so I'm
> wondering if there's an easier way?
>
> Any input would be appreciated! :)
>
> Thanks!
>
> - Joel

Hi Joel. Why not create a helper method that determines which partial
should be rendered? For example:
   http://pastie.org/pastes/322615

-Nick
0df56f2edb0d80e81c5c0ef1ca91690e?d=identicon&s=25 Joel Oliveira (Guest)
on 2008-12-12 03:21
(Received via mailing list)
Weeks later I finally got around to figuring out how to best tackle this
and
your suggestion was right on the money.  I didn't want to let this lie
without mentioning that the best bet started with that nugget from the
pastie link.  Thanks Nick :)

- Joel
49de4cd2f26705785cbef2b15a9df7aa?d=identicon&s=25 Nick Hoffman (nickh)
on 2008-12-15 19:16
(Received via mailing list)
On 2008-12-11, at 21:21, Joel Oliveira wrote:
> Weeks later I finally got around to figuring out how to best tackle
> this and your suggestion was right on the money.  I didn't want to
> let this lie without mentioning that the best bet started with that
> nugget from the pastie link.  Thanks Nick :)
>
> - Joel

I'm glad to hear it helped! Good luck, mate.
-Nick
This topic is locked and can not be replied to.