2012-07-06 19 views
11

Ho appena aggiornato il mio sito Rails da Rails 2 a Rails 3.2.Perché il `layout nil` non funziona?

Sul mio vecchio regolatore ho avuto:

class Foo::BarController < ApplicationController 
    layout nil 
    ... 
end 

Tuttavia, ora che ho aggiornato a Rails 3, sembra che ho bisogno di cambiare la situazione a:

layout false 

La documentazione relativa Rails Guides affermazioni che layout nil dovrebbe funziona perfettamente:

Dichiarazioni di layout in cascata verso il basso nella hierar Chy ...

classe OldPostsController < SpecialPostsController
disposizione nil

ho i seguenti gemme rilevanti nella mia Gemfile.lock

GEM

actionpack (3.2.6) 
    activemodel (= 3.2.6) 
    activesupport (= 3.2.6) 
    builder (~> 3.0.0) 
    erubis (~> 2.7.0) 
builder (3.0.0) 
erubis (2.7.0) 
haml (3.1.6) 

jquery-rails (2.0.2) 
    railties (>= 3.2.0, < 5.0) 

È questo un cambiamento documentato da qualche parte, o è una scimmia gemma imparentata che rattoppa qualcosa?

+0

'perché un == è stato modificato in un ===? –

+0

forse ... ma dove? –

risposta

20

The API spiega in questo modo:

Se il layout specificato è:

  • una stringa: la stringa è il nome del modello
  • un simbolo: chiamare il metodo indicato dal simbolo, che restituirà il nome del modello
  • false: non v'è alcuna disposizione
  • true: sollevare un ArgumentError
  • nil: forza comportamento layout di default con l'ereditarietà

Così il significato di nil cambiato da nessun layout per "comportamento layout di forza di default con l'ereditarietà". Sembra che la spiegazione in Rails Guides non sia corretta.

+5

jeez ... questo rails 3 upgrade è il regalo che non smette di prendere –

+0

Sospetto che sia questo cambiamento https://github.com/rails/rails/commit/5ad52152117ecda1166359c499bcd03ae6be3365 tweet josevalim –

+0

Sì, sembra che sia quello . Buona fortuna con il tuo aggiornamento ;-) – Mischa

Problemi correlati