Визуализация макета для конкретных действий - PullRequest
2 голосов
/ 28 марта 2012

Здесь у меня есть контроллер с 4 действиями, и я хочу применить макет приложения (макет по умолчанию) только к новому действию, или, другими словами, я хочу исключить только действие индекса из макета, поэтому я пишу это, но это не такработать, шаблон индекса рендеринга с макетом.

class SessionsController < ApplicationController

    layout 'application', :except => :index

    def index
    end 

    def new
    end


    def create
        end
    end

    def destroy
    end

end

также я пытался

layout 'application', :only => :new

, но это тоже не работает, та же проблема, которую шаблон индекса отображает с макетом.какие-либо предложения, в чем здесь проблема?

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Вы можете создать метод для определения вашего макета и исправить его только при новом действии

layout :my_layout

def my_layout
  params[:action] == 'new' ? 'application' : nil
end
1 голос
/ 28 марта 2012

Вот код, который вы можете использовать в своих контроллерах:

layout :resolve_layout
...
...

private

def resolve_layout
  if %w(index show).include?(action_name)
    "application"
  elsif %w(show).include?(action_name)
    "admin"
  else
    "generic"
end

По сути, обрабатывайте эти массивы как свои: только операторы для макета, которые вы им предоставляете, если они оцениваются как истинные по сравнению с текущим именем действия.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что это позволяет: только,: кроме, и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...