mjacobs
1
Hey there,
I have a problem.
class ApplicationController
layout :determine_layout
def determine_layout
“…/…/public/sites/#{@site.code}/application”
end
end
in rails2.0 this worked, but it was clearly a hack.
I tried to fix it in a few ways;
- symlink public/sites -> app/views/layouts/sites
- this breaks because the Dir.glob used to find view files doesnt work
for subfolders of a symlink
- set ApplicationController.view_paths << “public/sites”
- this doesnt quite seem to work.
- manually fix rails and work out the best way to patch it for 2.2.1
- this seemed to work, but isn’t quite plugin-able as a fix
mostly I’m wondering,
what is the right way to do this?
MatthewRudy
Quite often I’m tasked with doing something very similar. Check out my
solution:
class ExperiencesController < ApplicationController
self.view_paths << File.join(RAILS_ROOT, “cms”, “experiences”)
def show
render :layout => “1/layout”
end
end
requiring a folder structure like:
RAILS_ROOT/
app/
cms/
experiences/
1/
layout.html.erb
config/
…
Does that help?
On Oct 14, 4:25 pm, Matthew R. Jacobs <rails-mailing-l…@andreas-
mjacobs
3
Andrew B. wrote:
Quite often I’m tasked with doing something very similar. Check out my
solution:
class ExperiencesController < ApplicationController
self.view_paths << File.join(RAILS_ROOT, “cms”, “experiences”)
def show
render :layout => “1/layout”
end
end
requiring a folder structure like:
RAILS_ROOT/
app/
cms/
experiences/
1/
layout.html.erb
config/
…
Does that help?
On Oct 14, 4:25�pm, Matthew R. Jacobs <rails-mailing-l…@andreas-
Hey thanks andrew,
that’s the same thing I’m trying to achieve,
although the code as such won’t quite work in Rails 2.1.1
it’ll give you errors about “found a view path that is not in the right
format”
the correct way is
append_view_path(…)
and you pointed out my error
I was doing;
append_view_path(“public/sites”)
while actually what is required;
append_view_path(File.join(Rails.root, “public”, “sites”))
works great, it seems.
Thanks.
mjacobs
4
Matthew R. Jacobs wrote:
tthew Rudy J. <rails-mailing-l…@andreas-
Hey thanks andrew,
that’s the same thing I’m trying to achieve,
although the code as such won’t quite work in Rails 2.1.1
it’ll give you errors about “found a view path that is not in the right
format”
the correct way is
append_view_path(…)
and you pointed out my error
I was doing;
append_view_path(“public/sites”)
while actually what is required;
append_view_path(File.join(Rails.root, “public”, “sites”))
works great, it seems.
Thanks.
Wrote a quick blog post about this;
http://rudygems.com/post/54730156/rendering-layouts-that-live-in-public