2016-08-02 80 views
3

我正在使用Rails 5,我想在我的項目中使用共享文件。我已經搜索這個網站,我得到了一些研究結果如下:在Rails 5中添加共享視圖文件的位置?

對於Rails 3的

app/views/shared 

對於軌道4

app/views/application 

但沒有什麼Rails的5

我在談論標準;就像我們在其他框架中那樣,是否有任何特定位置可以在Rails 5中添加常見視圖文件?像在Laravel中有一個佈局文件夾?

+0

共享partials文件夾的名稱不是標準,只是味道/編碼風格的問題。 – Geoffroy

回答

5

所有人都告訴你,普通視圖文件沒有「標準位置」是正確的。然而,如果你想問Rails如果你試圖在視圖上渲染一個文件,它會去尋找一個不完整的文件,只需要取得你有的任何視圖文件,並渲染一個你不知道的部分。

如果你有,比如說,以期結構的UsersController,看起來像app/view/users,並添加任何看法有以下幾點:

<%= render 'foo' %> 

你可能會得到說像一個錯誤:

Missing partial users/_foo, application/_foo 

這意味着,只要你嘗試只是它的名字沒有任何路徑信息來呈現的部分,Rails會尋找它

  • 電流控制器視圖目錄下的第一個,在這種情況下users
  • 那麼application目錄

於是下,我想,那麼你可以說,在Rails中常見的「默認位置」查看文件在application目錄下。

有可能通過重寫ActionView::ViewPaths.local_prefixes私有類方法獲取混合,每個控制器在Rails中添加到這個以創建應用自己的「標準位置」普通視圖文件:

class ApplicationController < ActionController::Base 
    def self.local_prefixes 
    ['shared', controller_path] 
    end 
    private_class_method :local_prefixes 
end 

class UsersController < ApplicationController 
    def self.local_prefixes 
    [controller_path] 
    end 
    private_class_method :local_prefixes 
end 

現在,你的錯誤會這樣說:

Missing partial users/_foo, shared/_foo, application/_foo 

這表明Rails會檢查shared目錄的諧音,以及它去尋找在application目錄之前。

注意,此方法重寫應在控制器發生,否則UsersControllerlocal_prefixes得到來自ApplicationController繼承和你結束了,看起來像重複的查找路徑:

shared/_foo, users/_foo, shared/_foo, application/_foo 

如果這一切是太多的努力/太奇怪了,正如其他人指出的那樣,當你渲染一個局部圖時,你總是可以手動指定你的共享局部目錄:

<%= render 'shared/foo' %> 
4

您可以在app/views目錄下創建新目錄,並在該目錄中添加共享文件。 例如:

app/views/shared # Contains all shared/partial pages 

現在app/views/shared目錄 像創建部分頁面:app/views/shared/_my_shared_view.html.erb

現在如果你想使用的任何視圖這個共享視圖只需添加下面的代碼。

<%= render :partial => 'shared/my_shared_view' %> 

就是這樣。希望這會幫助你。

+0

你正在使用的標準是Rails 3,我使用Rails 5,但這並不意味着這在Rails 5中不起作用,但它不是正確的方式 –

+0

所以,你想要加載什麼樣的共享模板? – hgsongra

+0

我在談論標準,意思是說有什麼具體的位置可以在Rails 5中添加常見的視圖文件,就像我們在其他框架中做的一樣,就像在Laravel那裏有一個佈局文件夾, –