Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fix subclassed PagesController with custom layout

  • Loading branch information...
commit e4b1ce9dfc936b90ef33975ca73f4eaac2fd9a43 1 parent 7556fcd
@mhoran mhoran authored
View
4 app/controllers/high_voltage/pages_controller.rb
@@ -1,7 +1,7 @@
class HighVoltage::PagesController < ApplicationController
unloadable
- layout HighVoltage::layout
+ layout Proc.new { HighVoltage::layout }
rescue_from ActionView::MissingTemplate do |exception|
if exception.message =~ %r{Missing template #{HighVoltage::content_path}}
@@ -12,7 +12,7 @@ class HighVoltage::PagesController < ApplicationController
end
def show
- render :template => current_page, :layout => HighVoltage::layout
+ render :template => current_page
end
protected
View
32 spec/controllers/subclassed_pages_controller_spec.rb
@@ -0,0 +1,32 @@
+require 'spec_helper'
+
+describe SubclassedPagesController do
+
+ render_views
+
+ describe "on GET to /subclassed_pages/exists" do
+ before { get :show, :id => 'exists' }
+
+ it "should respond with success and render template" do
+ response.should be_success
+ response.should render_template('exists')
+ end
+
+ it "should use the custom configured layout" do
+ response.should_not render_template("layouts/application")
+ response.should render_template('layouts/alternate')
+ end
+ end
+
+ it "should raise a routing error for an invalid page" do
+ lambda { get :show, :id => "invalid" }.should raise_error(ActionController::RoutingError)
+ end
+
+ it "should raise a routing error for a page in another directory" do
+ lambda { get :show, :id => "../other/wrong" }.should raise_error(ActionController::RoutingError)
+ end
+
+ it "should raise missing template error for valid page with invalid partial" do
+ lambda { get :show, :id => "exists_but_references_nonexistent_partial" }.should raise_error(ActionView::MissingTemplate)
+ end
+end
View
3  spec/dummy/app/controllers/subclassed_pages_controller.rb
@@ -0,0 +1,3 @@
+class SubclassedPagesController < HighVoltage::PagesController
+ layout 'alternate'
+end
View
57 spec/dummy/config/routes.rb
@@ -1,58 +1,3 @@
Dummy::Application.routes.draw do
- # The priority is based upon order of creation:
- # first created -> highest priority.
-
- # Sample of regular route:
- # match 'products/:id' => 'catalog#view'
- # Keep in mind you can assign values other than :controller and :action
-
- # Sample of named route:
- # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
- # This route can be invoked with purchase_url(:id => product.id)
-
- # Sample resource route (maps HTTP verbs to controller actions automatically):
- # resources :products
-
- # Sample resource route with options:
- # resources :products do
- # member do
- # get 'short'
- # post 'toggle'
- # end
- #
- # collection do
- # get 'sold'
- # end
- # end
-
- # Sample resource route with sub-resources:
- # resources :products do
- # resources :comments, :sales
- # resource :seller
- # end
-
- # Sample resource route with more complex sub-resources
- # resources :products do
- # resources :comments
- # resources :sales do
- # get 'recent', :on => :collection
- # end
- # end
-
- # Sample resource route within a namespace:
- # namespace :admin do
- # # Directs /admin/products/* to Admin::ProductsController
- # # (app/controllers/admin/products_controller.rb)
- # resources :products
- # end
-
- # You can have the root of your site routed with "root"
- # just remember to delete public/index.html.
- # root :to => "welcome#index"
-
- # See how all your routes lay out with "rake routes"
-
- # This is a legacy wild controller route that's not recommended for RESTful applications.
- # Note: This route will make all actions in every controller accessible via GET requests.
- # match ':controller(/:action(/:id(.:format)))'
+ match "/subclassed_pages/*id" => 'subclassed_pages#show', :format => false
end
Please sign in to comment.
Something went wrong with that request. Please try again.