Установить макет для определенных действий?
Моя папка app/views/layouts выглядит следующим образом:
application.html.erb
user_sessions.html.erb
errors.html.erb
Эти функции прекрасны, и у меня нет проблем с ними, но теперь мне нравится добавлять новый макет для подсказок, но только на действия индекса и show.
Работает ли "tips.index.html.erb"?
Ответы
Ответ 1
Добавьте новый макет, как вам нравится, "tips.html.erb"
В контроллере подсказок добавьте следующее:
layout "tips", :only => [ :index, :show ]
Вы можете указать макет для определенного действия, используя:
def new
render(:layout => "layouts/application")
end
Я никогда не пробовал использовать несколько указателей макета в контроллере. Возможно, добавление другого
layout "standard", :only => [ :new, :edit ]
может работать...
Ответ 2
Если вы хотите использовать несколько макетов в контроллере, используйте следующий код: (action_name - это предопределенная переменная, которую вы можете использовать непосредственно в Rails)
class OrdersController < BaseController
layout :determine_layout
private
def determine_layout
%w(new).include?(action_name) ? "some_layout" : "public"
end
end
см. ниже: fooobar.com/info/150106/...