2013-08-26 28 views
1

我試圖獲取當前視圖的名稱被加載到layout.erb。我正在嘗試將js文件和css文件注入到佈局頭部。我正在根據erb視圖的名稱構建這些文件的名稱:從內部佈局獲取erb視圖

<link rel="stylesheet" href="/devcss/<%= viewName%>.css"> 
<script src="/devjs/<%= viewName %>.js" type="text/javascript"></script> 

如何從佈局模板執行此操作?

UPDATE:我不知道如何將腳本注入佈局中的特定位置,我認爲content_for用於此目的。上面我需要的例子knok是如何確定的viewName 可變

回答

0

將以下爲application.html.erb內head標籤

<%= "#{yield(:scripts)}".html_safe if content_for?(:scripts) %> 

後,並在個別僱員再培訓局,插入類似以下

<% content_for :scripts do %> 
    <link rel="stylesheet" href="/devcss/<%= viewName%>.css"> 
    <script src="/devjs/<%= viewName %>.js" type="text/javascript"></script> 
<% end %> 

這將允許你插入頁面特定代碼到頭部和其他標籤無法訪問您的個人ERBS

+0

我知道我可以將參數傳遞給我的erb,我只是想知道是否有一種簡單的佈局方式來知道哪些erb包括 – Luis

+1

'content_for'來自Rails,而不是Sinatra。 Sinatra沒有'content_for'開箱即用,您需要使用類似[Sinatra :: Contrib]中的[ContentFor extension](http://www.sinatrarb.com/contrib/content_for.html)( http://www.sinatrarb.com/contrib/),它使用'yield_content'而不是'yield'。 – matt

+0

另外'if:scripts'將會成爲true,因爲':scripts'是一個符號。我想你的意思是測試模板是否爲該符號添加了內容,我不知道是否有辦法在Rails中這樣做。 – matt