没有指定ID的资源路径

时间:2012-10-11 20:05:07

标签: ruby-on-rails ruby routes

如果我的路径在特定资源上,我想渲染部分,但我不想指出资源的ID。

如果路径位于任何视频资源上,我想加载部分保存在<head>标记之间的元数据标记:

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

但是,如果我已经请求了视频资源,例如'/videos/92',这只会有效。

3 个答案:

答案 0 :(得分:3)

您可以尝试request.full_path.starts_with? videos_pathrequest.full_path =~ /^\/video/

然而,有更好的方法来做到这一点。在你的布局中:

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

在要添加元标记的视图中:

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

此用法是content_for方法的canonical example

答案 1 :(得分:1)

我相信这就是你要找的......

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

答案 2 :(得分:-1)

理想情况下,您需要一个负责视频资源的控制器的自定义布局。可以通过此railscast http://railscasts.com/episodes/7-all-about-layouts了解有关布局的更多信息。

对于快速而肮脏(非常非常脏)的解决方案,您可以检查request.fullpath是否包含“videos”字符串。例如

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