Layout e opzioni

Salve,
in Rails 2 funzionava perfettamente il comando all’inizio del
controller:

layout ‘law’, :except=>[:not_found]

in Rails 3 non funziona più anche se ho trovato indicazioni in merito e
la sintassi è identica.

Dove sto sbagliando?

Grazie

Sembra corretto. Dacci qualche info in pi.

2013/11/24 Luigi M. [email protected]

Infatti non riesco a capire…comunque quello che succede è che:

class ViewController < ApplicationController

require ‘rmagick’
layout “view”, :except=> [:picture]

def index

…end

def picture

end

ma la vista picture continua ad usare il layout view a meno di mettere
nel def picture il comando render :layout=>false

Non riesco a capire.

Non che hai un layout application uguale a view?

Alessandro R.

Ho controllato, purtroppo no il layout application è quello di default e
diverso dal layout view.

Perdonate l’attesa, no, non funziona neppure only!

…bah!

Nel log viene chiaramente chiamato il layout view:

Started GET “/copyright/disclaimer.html” for 127.0.0.1 at 2013-11-26
23:38:49 +0100
Processing by ViewController#disclaimer as HTML
Parameters: {“keyword”=>“copyright”}
Rendered view/_traduttore.html.erb (0.0ms)
Rendered view/_google_plus.html.erb (0.0ms)
Rendered view/disclaimer.html.erb within layouts/view (3.0ms)
Rendered view/_traduttore.html.erb (0.0ms)
Rendered view/_google_plus.html.erb (0.0ms)
Rendered view/_paginator_rel2.html.erb (1.0ms)
Rendered view/_copyright.html.erb (0.0ms)
Completed 200 OK in 33ms (Views: 33.0ms | ActiveRecord: 0.0ms)

se nella vista disclaimer dichiaro layout=> false allora:

Started GET “/copyright/disclaimer.html” for 127.0.0.1 at 2013-11-26
23:40:16 +0100
Processing by ViewController#disclaimer as HTML
Parameters: {“keyword”=>“copyright”}
Rendered view/_traduttore.html.erb (0.0ms)
Rendered view/_google_plus.html.erb (0.0ms)
Rendered view/disclaimer.html.erb (2.0ms)
Completed 200 OK in 5ms (Views: 5.0ms | ActiveRecord: 0.0ms)

Per allargare la fiera delle ipotesi… non è che c’è di mezzo qualche
redirezione o render :action? Controlla nel log tutte le linee che
iniziano con " Rendered" e verifica quali view e partial vengano
realmente usati.

Googlando però vedo che non sei l’unico con questi problemi

Per curiosità, only funziona come ti aspetti?

layout “view”, :only => :index

Prova anche senza l’array.

Paolo

In ApplicationController non ho alcuna chiamata a layout, la chiamata al
layout sta solo in ViewController.

Hai un’unica chiamata a layout nei controllori ViewController +
ApplicationController?
(v. #3619 Conditional layouts ignore default application wide layout - Ruby on Rails - rails)

i.