2015-10-06 40 views
0

這裏有個問題,比方說我有一些資源需要在同一個頁面上用標籤分隔,在這種情況下,它是不同類型的內容:視頻,pdf等等。我也有一部分被包含進去幾種不同的觀點,在這種情況下是搜索功能。局部做這樣的事情,讓你自定義它的各個部分:ActionView :: Template:render如何決定從哪裏加載?

在_search.html.slim

.toolbar 
    .left 
    = render 'left_toolbar', f: f 

項目樹看起來類似:

app 
--views 
----media 
------index.html.slim 
------videos_list.html.slim 
------pdfs_list.html.slim 
------videos 
--------_left_toolbar.html.slim 
------pdfs 
--------_left_toolbar.html.slim 

而且我有一個控制器,管理從各種內容資源頁面進入的請求:

在media_library_controller.rb:

def index 
end 

def videos 
    <sets everything needed to render a videos list, @videos etc.> 
    render :index 
end 

def pdfs 
    <sets everything needed to render a pdf list, @pdfs etc.> 
    render :index 
end 

而在index.html.slim

= render 'application/search' 
ul.nav.nav-tabs 
    li.active 
    a href='#videosListTab' data-toggle='tab' Videos 
    li 
    a href='#pdfsListTab' data-toggle='tab' PDFs 
ul.tab-content 
    li.tab-pane.active#videosListTab 
    .js-video-collection 
     = render 'videos_list' if @videos 
    li.tab-pane.active#pdfsListTab 
    .js-pdf-collection 
     = render 'pdfs_list' if @pdfs 

我要的是能夠在控制器哪個文件夾left_toolbar.html定義。當search.html.slim去尋找它slim是尋找

我試過重寫controller_path哪些看不到米工作。 prepend_view_path似乎很有希望,但它將控制器名稱附加到視圖路徑的末尾,以便在設置它時擁有類似app/views/media_library/videos/media_library的內容。有什麼建議?我不想在本地搜索部分。

回答

0

我想要的是能夠在控制器哪個文件夾left_toolbar.html.slim定義是尋找時search.html.slim去尋找它


Perhaps you're getting ahead of yourself

<%= render "shared/menu" %>

該代碼將在部分拉離 app/views/shared/_menu.html.erb。

從我對你的問題的理解中,你想知道Rails如何爲你的偏好指定一個特定的路徑?沒有必要 - 可以從應用程序的任何位置引用偏分量。

所以,當你提到search.html去尋找它,你只需要預先設置文件夾left_toolbar的路徑:

render 'your_path/left_toolbar', f: f 

同樣,與媒體的標籤?他們都是部分 - 只需使用部分路徑中的文件夾名稱:

= render 'app/views/media_library/pdfs_list' if @pdfs 
+0

對不起,也許它不清楚,但搜索部分依賴重載模板路徑。 search.html.slim所在的「共享」目錄中有一個名爲_left_toolbar.html.slim的文件,但它會被每個資源覆蓋,方法是在與控制器對應的每個文件夾中放入另一個名爲_left_toolbar.html.slim的文件。在查看_left_toolbar.html.slim的「共享」之前,首先在控制器的文件夾中導航相關內容。這個世界對於一個資源 - >一個文件夾來說很好,但是現在你可以看到,我有多個它會被掛起。 – ohhh