2017-02-01 73 views
0

對此,可能沒有正確的答案,但我想獲得有關最佳實踐的信息。區分儀表板佈局和其他視圖

我已經建立了一個rails應用程序。在應用程序中,有一個儀表板視圖和一個常規視圖。在application.html.erb中,我將包含兩個視圖的標題和頁腳,但區分這兩個視圖的最佳做法是什麼?

兩種方式我一直在考慮是:

  1. 包括可變(is_dashboard_view),並檢查它。
  2. 更改URL的有一個共同的模式,像/儀表板/ ...

我對選項1傾斜,因爲它似乎是一個麻煩的少。有沒有其他的選擇,什麼是最佳做法。

回答

0

在這裏,你需要創建一個新的佈局dashboard.html.erb類似application.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

在這種情況下,我們在app>views>layouts文件夾中創建新佈局other_view.html.erb。然後需要使用它的控制器,可以呈現爲:

class OtherController 

    layout 'other_view' 
    // statements/methods 

end 

如果沒有定義控制器上的佈局名稱,它將使用application.html.erb爲默認值。

OR

您可以從params[:controller]檢查目前你是哪個控制器。

0

你可以用戶不同的佈局不同的看法。

您可以使用控制器名稱/操作名稱進行區分。

params[:controller] 
params[:action] 
0
在你的控制器文件

,添加

layout :choose_layout 

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

其中兩個佈局在佈局/文件夾中。你可以根據你的動作/控制器/參數改變'if condition'。