]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/user_controller.rb
Another approach, but this time without scattering stuff all over the methods
[rails.git] / app / controllers / user_controller.rb
index 3d20120647cc1f6fb4a45ef49d0f6542a8c66cdd..ed17c1e41ea04e32f32c7e47fe235bce83637659 100644 (file)
@@ -1,5 +1,5 @@
 class UserController < ApplicationController
-  layout 'site', :except => [:api_details]
+  layout :choose_layout
 
   before_filter :authorize, :only => [:api_details, :api_gpx_files]
   before_filter :authorize_web, :except => [:api_details, :api_gpx_files]
@@ -257,7 +257,6 @@ class UserController < ApplicationController
     elsif flash[:notice].nil?
       flash.now[:notice] =  t 'user.login.notice'
     end
-    render :layout => 'slim'
   end
 
   def logout
@@ -497,4 +496,17 @@ private
   rescue ActiveRecord::RecordNotFound
     redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] unless @this_user
   end
+
+  ##
+  # Choose the layout to use. See
+  # https://rails.lighthouseapp.com/projects/8994/tickets/5371-layout-with-onlyexcept-options-makes-other-actions-render-without-layouts
+  def choose_layout
+    if [ 'api_details' ].include? action_name
+      nil
+    elsif [ 'login', 'new', 'terms'].include? action_name
+      'slim'
+    else
+      'site'
+    end
+  end
 end