Используйте макет для конкретного действия - PullRequest
36 голосов
/ 02 апреля 2011

Если я хотел бы использовать макет для определенного действия (например, действие show), который отличается от макета, объявленного в верхней части файла controller.rb, как я могу это сделать?Это должно быть возможно в рельсах, но я не могу ничего найти об этом.

Ответы [ 3 ]

43 голосов
/ 02 апреля 2011
  render :layout => 'otherlayout'
37 голосов
/ 02 апреля 2011
layout 'layout', :only => [:first_action, :second_action]
layout 'second_layout', :only => [:third_action, :fourth_action]

Дон тоже прав, зависит только от вашего приложения, которое более СУХОЕ (или СУХОЕ?)


EDIT Мой предыдущий код ошибочен. Вы не можете указать функцию layout несколько раз. Я нашел это решение онлайн для рендеринга динамического макета:

class OrdersController < BaseController
  layout :determine_layout

private
  def determine_layout
    %w(new).include?(action_name) ? "some_layout" : "public"
  end
end

Источник: apidock.com / rails / Actio ...

0 голосов
/ 24 декабря 2017

Следующий пример применяет желаемый макет к определенному действию, в противном случае он использует макет по умолчанию (layouts / application.html.erb).

class ArticlesController < ApplicationController
   layout "article_editor", only: [:new, :edit]

   def index
     # default layout
   end

   def new
     # article_editor layout
   end

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