depquid
depquid

Reputation: 776

Find filename of view template in Rails 3 based on action and format

I'm upgrading an old Rails 2.3 (I know, I know) which uses an external program to modify a PDF before rendering it for an action. Therefore, it's necessary for the action to be able to determine the filename of the PDF source file, which is stored in the view template directory, which was done with:

view_paths.find_template(default_template_name(:show), :pdf).filename

However, this no longer works in Rails 3. I've tried something like:

lookup_context.find :show, controller_name

But I can't find a way to specify the format, so that always returns the path for the HTML template (app/views/name/show.html.erb). How can I get the filename of the template for the PDF format (app/views/name/show.pdf)?

Upvotes: 1

Views: 96

Answers (1)

depquid
depquid

Reputation: 776

Though more complicated than I would like, I eventually found this, which seems to work:

ActionView::LookupContext.
  new(view_paths, {formats: :pdf}).
  find(:show, controller_name).
  identifier

Upvotes: 1

Related Questions