我正在使用Rails 5,我想在我的項目中使用共享文件。我已經搜索這個網站,我得到了一些研究結果如下:在Rails 5中添加共享視圖文件的位置?
對於Rails 3的
app/views/shared
對於軌道4
app/views/application
但沒有什麼Rails的5
我在談論標準;就像我們在其他框架中那樣,是否有任何特定位置可以在Rails 5中添加常見視圖文件?像在Laravel中有一個佈局文件夾?
我正在使用Rails 5,我想在我的項目中使用共享文件。我已經搜索這個網站,我得到了一些研究結果如下:在Rails 5中添加共享視圖文件的位置?
對於Rails 3的
app/views/shared
對於軌道4
app/views/application
但沒有什麼Rails的5
我在談論標準;就像我們在其他框架中那樣,是否有任何特定位置可以在Rails 5中添加常見視圖文件?像在Laravel中有一個佈局文件夾?
所有人都告訴你,普通視圖文件沒有「標準位置」是正確的。然而,如果你想問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
目錄之前。
注意,此方法重寫應在都控制器發生,否則UsersController
的local_prefixes
得到來自ApplicationController
繼承和你結束了,看起來像重複的查找路徑:
shared/_foo, users/_foo, shared/_foo, application/_foo
如果這一切是太多的努力/太奇怪了,正如其他人指出的那樣,當你渲染一個局部圖時,你總是可以手動指定你的共享局部目錄:
<%= render 'shared/foo' %>
您可以在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' %>
就是這樣。希望這會幫助你。
你正在使用的標準是Rails 3,我使用Rails 5,但這並不意味着這在Rails 5中不起作用,但它不是正確的方式 –
所以,你想要加載什麼樣的共享模板? – hgsongra
我在談論標準,意思是說有什麼具體的位置可以在Rails 5中添加常見的視圖文件,就像我們在其他框架中做的一樣,就像在Laravel那裏有一個佈局文件夾, –
共享partials文件夾的名稱不是標準,只是味道/編碼風格的問題。 – Geoffroy