2015-08-23 5 views
1

Я изучаю Ruby on Rails. У меня есть страница входа, у которой есть макет, который полностью отличается от остальной части сайта. Внутри моих маршрутов.rb, как я могу заставить приложение всегда отображать эту конкретную страницу, используя представление «login» вместо стандартного «приложения»?Маршруты к конкретному виду в Ruby on Rails

+2

вы можете обрабатывать его в контроле входа ler, см. эту ссылку: http://stackoverflow.com/questions/3025784/rails-layouts-per-action – ifma

+0

Не может ли это быть сделано в route.rb по какой-то причине? – mack

+1

Нет. Похож на дизайн дизайна рамки, см .: http://stackoverflow.com/questions/24982111/can-i-render-a-layout-directly-from-routes-rb-without-a-controller – ifma

ответ

3

В Rails 4 вы можете использовать: render layout: 'some_layout' для визуализации определенного макета.

В login методы вашего контроллера, вы можете иметь что-то вроде этого:

def login 
    # do stuff 
    if some_condition 
    # do stuff 
    render layout: 'some_condition_layout' 
    else 
    # do other stuff 
    render layout: 'some_other_layout' 
    end 
end 

Для получения более подробной информации о визуализации и макетах, вы можете проверить Layouts and Rendering in Rails

0

Вы можете вызвать визуализации раскладки на каждое действие, как за answer above или вы можете сделать следующее dynamically set the layout name depending on the action name::

class PagesController < ApplicationController 
    layout :resolve_layout 

    def index 
    end 

    def home 
    end 

    def dashboard 
    end 

    private 
     def resolve_layout 
      case action_name 
      when "home" #action name 
       "home" #layout name 
      when "dashboard" 
       "dashboard" 
      else 
       "application" 
      end 
     end 

end 
Смежные вопросы