2015-10-05 231 views
0

我正在嘗試構建一個像方形空間的演示應用程序。我有一個預覽頁面,其中一個iframe加載所選模板。所以我決定,我不會需要默認佈局(application.html.erb)。我在視圖中創建了一個名爲Design1的新文件夾,並在裏面創建了另一個名爲partials的文件夾。我在裏面創建了_header.html.erb。我創建了一個叫做home.blade.php的設計1文件夾內的另一個文件,並試圖以包括它的「佈局/頭」,這讓我這個犯錯在rails中渲染局部佈局

Missing partial Design1/_header with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/usr/share/nginx/html/fuitter-test/app/views" 

這是我如何渲染家裏頭文件.html.erb

<%= render 'layouts/header' %> 

我forlder structuer

views 
    -Design1 
    -layouts 
     - _header.html.erb 
    -home.html.erb 
    -other folders 

而且我也做

layout false 

控制器

+0

請顯示部分呈現代碼。 – Zahid

+0

可能'''Design1'''必須包含到'''render'''的參數中嗎? '''<%= render'Design1/layouts/header'%>''' –

+0

看到我的答案,底部路徑。如果你真的想去/ Design1 /你需要預先安裝view_paths –

回答

2

首先 - 總是 downcase上的文件名!切勿使用設計MyCoolStory,在軌我們用約定優於配置這意味着snake_case這是everytihng downcased與_under_scores

要渲染問題分隔。 有一個偉大的文檔,你會發現任何你需要的:http://guides.rubyonrails.org/layouts_and_rendering.html

讓我來幫你一下。

Rails正在尋找一個佈局。默認情況下,它將在/app/views/layouts/application.html.erb中預計(將它命名爲應用程序沒有任何問題)。佈局是您需要的整個HTML框架。在佈局內部(應該)始終是yield塊。 rails中的YieldBlock是模板渲染到的位置。

所以基本上佈局文件可以是這樣的(我使用HAML爲便於閱讀)

%html 
    %head 
    =render "shared/head" 
    %body 
    .wrapper 
     %nav.navigation=render "shared/navigation" 
     .main_content 
     =yield 
     %footer.foot=render "shared/footer" 

,這意味着你有在/應用/視圖3部分模板/共享命名_head .html.erb_navigation.html.erb_footer.html.erb

這就是軌道的方式。


Furter信息

如果你計劃有一個多設計的應用程序,你應該結構總您的觀點一樣

  • /應用/視圖/設計1
  • /app/views/design2
  • /app/views/design3
  • /應用/視圖/共享

,並設置查找路徑在控制器這樣

prepend_view_path "#{Rails.root}/app/views/#{design_path}" 
def design_path 
    current_page.design_name 
end 

屆時,所有的意見都會被查找到他們指定的文件夾(施普雷multi_store ENGINGE,是做像這樣,舉例)

0

你把你的layouts文件夾中的文件夾Design1,因此,你應該使用以下路徑以使您的佈局:

<%= render 'Design1/layouts/header' %> 
1

渲染結構應該從/views文件夾中開始。

<%= render 'Design1/layouts/header' %>