I have a client Rails project, and I'd like to create a folder outside of the Rails app completely. The client could create vanilla HTML files and drop them into the folder. I'd then like to render those HTML files as partials against the main site template. I want to keep the client as far from the actual Rails app as possible. Is there a way for me to render partials from outside the Rails root? Or at least outside views? Thanks, Jeff
on 2009-01-01 23:33
on 2009-01-02 12:43
render :file => ...
on 2009-01-02 19:39
I'm using render :file, but as far as I can tell, Rails still tacks RAILS_ROOT/app/views to the beginning of the given filename. Is there a way to disable this? Ideally, I'd be rendering the partial from outside the Rails root entirely.
on 2009-01-03 18:59
From the API: File rendering works just like action rendering except that it takes a filesystem path. By default, the path is assumed to be absolute, and the current layout is not applied. # Renders the template located at the absolute filesystem path render :file => "/path/to/some/template.erb" render :file => "c:/path/to/some/template.erb" # Renders a template within the current layout, and with a 404 status code render :file => "/path/to/some/template.erb", :layout => true, :status => 404 render :file => "c:/path/to/some/template.erb", :layout => true, :status => 404 Based on that you should be able to use one of the 2 first samples and modify it for your needs. Pepe
on 2009-01-05 03:28
Thanks for the help on this. I figured out what my problem was. render :partial works as advertised when used in a controller, but not as a helper when used in a view (at least in Rails 2.0.2). The helper version of render tries to tack the view path to the beginning of the filepath no matter what. Instead, I used render_to_string form the controller and used the string directly in the view. This may have been fixed in a subsequent version of Rails.