2012-10-11 151 views
3

如果我的路徑位於特定的資源上,但我不想指出資源的ID,我想渲染一個局部。沒有指定ID的資源路徑

我想加載我<head>標籤之間的部分持有元數據標籤如果路徑上的任何視頻資源:

<head> 
    <%= render 'layouts/partial_name' if request.fullpath == video_path(params[:id]) %> 
</head> 

這隻作品,不過,如果我要求的視頻資源,例如,'/videos/92'

+1

'如果request.fullpath =〜/ \ A \ /視頻/' – apneadiving

+2

我們並不需要知道你是新的東西。無論如何,一個好問題是一個好問題。做你的盡職調查,然後在你提出問題之前搜索SO和Google,然後,如果你還沒有發現你想知道的內容,就去問問。歡迎來到Stack Overflow。 –

+0

謝天謝地。很好的編輯。 –

回答

3

您可以嘗試request.full_path.starts_with? videos_pathrequest.full_path =~ /^\/video/

但是,有一個更好的方法來做到這一點。在您的佈局:

<head> 
    <!-- ... --> 
    <%= yield :head %> 
</head> 

在您要添加meta標籤的觀點:

<% content_for :head do %> 
<%= render :partial => 'meta_tags' %> 
<% end %> 
<!-- ... --> 

這種用法是canonical examplecontent_for方法。

+0

工程就像一個魅力,willglynn。謝謝。 –

-1

理想情況下,您需要一個負責視頻資源的控制器的自定義佈局。關於佈局的更多信息可以在這個railscast http://railscasts.com/episodes/7-all-about-layouts上了解到。

對於一個快速和髒(非常非常骯髒)的解決方案,你可以檢查request.fullpath是否包含「視頻」字符串。例如。

<%= render 'layouts/partial_name' if request.fullpath =~ /videos/ %> 
+0

爲什麼他應該做一個單獨的佈局來添加一些東西到''? – willglynn

+0

據推測,如果他想在視頻頁面的頭部顯示特定的部分,那麼頁面本身肯定會有不同。我猜部分是樣式表還是js?那麼引入新的佈局可能會更有意義。 – nan

+0

他說:「我想加載元數據標籤」,大概是「和」description「。 – willglynn

1

我相信這是你要找的內容...

<%= render 'layouts/partial_name' if params[:controller] == "videos" && params[:action] == "show" %> 
+0

我喜歡這一點,但部分將加載視頻控制器中的所有方法,包括索引,編輯,新等。我在元標記中引用變量,所以它出錯。它看起來不像'if params [:controller] ==「videos#show」'寄存器。 –

+0

還有一個params [:action] – rthbound