2017-02-01 15 views
0

Вероятно, для этого нет правильного ответа, но я хотел бы получить информацию о том, что такое лучшие практики.Дифференциация между макетами панели управления и другим видом

У меня есть приложение для рельсов, уже построенное. В приложении есть вид панели и обычный вид. В application.html.erb я буду включать заголовок и нижний колонтитул для обоих представлений, но какова наилучшая практика для разграничения между двумя представлениями?

два пути я думал о том, являются:

  1. Включите переменную (is_dashboard_view) и проверить его.
  2. Изменение URL, чтобы иметь общую картину, как/приборной панели/...

Я склонялся к варианту 1, поскольку она, как представляется, меньше хлопот. Существуют ли какие-либо другие варианты, и что было бы лучше всего.

ответ

0

Здесь вам необходимо создать новую структуру, подобную dashboard.html.erbapplication.html.erb. В этом новом макете вы можете использовать только те активы, которые вы хотите загрузить для просмотра приборной панели и Вы можете использовать специальный макет, как это ....

class MyController < ApplicationController 
    layout 'dashboard' 
end 

Для рельсов макета в действие вы можете использовать метод установите макет.

class MyController < ApplicationController 
    layout :resolve_layout 

    # ... 

    private 

    def resolve_layout 
    case action_name 
    when "new", "create" 
     "some_layout" 
    when "index" 
     "other_layout" 
    else 
     "application" 
    end 
    end 
end 
0

В этом сценарии мы создаем новый макет other_view.html.erb в папке app>views>layouts. Затем контроллер, который нужно использовать его вы можете сделать, как:

class OtherController 

    layout 'other_view' 
    // statements/methods 

end 

Если вы не определить имя макета на контроллере, то он будет использовать application.html.erb по умолчанию.

ИЛИ

Вы можете проверить с params[:controller], каким контроллером вы в данный момент.

0

Вы может пользователь разный макет для различных точек зрения.

ИЛИ

можно дифференцировать с помощью контроллера имя/название действия.

params[:controller] 
params[:action] 
0

в файле контроллера, добавьте

layout :choose_layout 

    def choose_layout 
    return 'dashboard_layout' if action_name == 'dashboard' 
    'view_layout' 
    end 

, где обе макеты находятся в макеты/папки. вы можете изменить «если условие» в соответствии с вашими действиями/контроллерами/параметрами.