Question

I have a rails 3.2 application in which I am using the gem High Voltage for my public pages. It seems to work fine, however, I would like to be able to put some subdirectories in my pages folder.

For example:

/pages
--/directory_1
----index.html.erb
--/directory_2
----index.html.erb

In this example, I want to point my browser to pages/directory_1/index, etc. The documentation claims it to be possible:

You can nest pages in a directory structure, if that makes sense from a URL perspective for you: link_to "Q4 Reports", page_path("about/corporate/policies/HR/en_US/biz/sales/Quarter-Four")

But something like that doesn't work for me.

I have tried it with a namespace:

namespace :directory_1 do
  match "pages/:id" => "high_voltage/pages#show"
end

but that of course then goes to directory_1/high_voltage/pages#show, which is wrong.

Simply doing match "pages/directory_1/:id" => "high_voltage/pages#show" comes with two problems: It does not allow for any views in the pages directory itself anymore, and views with the same filename in different subdirectories will get confused.

So how can I accomplish nested directories inside my pages directory with High Voltage?

Was it helpful?

Solution

Simply create a directory structure inside app/views/pages to reflect the URL hierarchy that you need.

For instance, if you created a view named about.html.erb with the path app/views/pages/about_me/about.html.erb, you will reference it by using

<%= link_to "About", page_path("about_me/about") %>

I got this exact solution working in a current project.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top