2012-10-11 96 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