Ruby 在Rails3.x中,如何为引用父资源的嵌套资源设计视图?

Ruby 在Rails3.x中,如何为引用父资源的嵌套资源设计视图?,ruby,ruby-on-rails-3,model-view-controller,nested,url-routing,Ruby,Ruby On Rails 3,Model View Controller,Nested,Url Routing,假设我有一个嵌套资源,如Rails指南示例中所示: 这会将对/magages/newsweek/ads的调用路由到AdsController#索引。它需要URL中的杂志id…我应该如何创建一个基于用于广告索引的模板的视图,同时还包括父资源的上下文 例如,所有有广告的父资源都有这些广告的列表。但是我希望视图的顶部包含每个杂志的样板信息。如果/magages/newsweek/ads直接指向通用AdsController#索引,我如何使该#索引视图意识到需要包含从杂志模型生成的样板文件 如果其他模

假设我有一个嵌套资源,如Rails指南示例中所示:

这会将对/magages/newsweek/ads的调用路由到AdsController#索引。它需要URL中的杂志id…我应该如何创建一个基于用于广告索引的模板的视图,同时还包括父资源的上下文

例如,所有有广告的父资源都有这些广告的列表。但是我希望视图的顶部包含每个杂志的样板信息。如果/magages/newsweek/ads直接指向通用AdsController#索引,我如何使该#索引视图意识到需要包含从杂志模型生成的样板文件

如果其他模型与广告有关系(电视剧有很多:广告),我希望AdsController索引对这些也有不同的反应

编辑:

这就是我过去通过MagazinesController做这些事情的方式。假设我想要一本独立的杂志#show action#的路线是:

resources :magazines 
resources :ads
get "magazines/:id/ads", :controller=>"companies", :action=>"ads"
class MagazinesController < ApplicationController
  def show
    ...
  end

  def ads
    ...
  end

end
控制器应为:

resources :magazines 
resources :ads
get "magazines/:id/ads", :controller=>"companies", :action=>"ads"
class MagazinesController < ApplicationController
  def show
    ...
  end

  def ads
    ...
  end

end
class MagazinesController
然后,杂志广告将有一部分广告列表,这些列表将在所有其他类型的资源中共享


这对我来说是有道理的,但这条路线似乎有可能是干燥剂?

听起来你应该在杂志控制器里工作

#Magazine_controller
def show
  @magazine = Magazine.find(params[:id])
  @ads = @magazine.ads
end
然后,在您的视图中,只需为您的广告集合呈现部分。您的部分广告将保存在广告区域中。所以在你的面纱里:

<%= render :partial => "ads/ad", :collection => @ads %>
“ads/ad”,:collection=>@ads%>

谢谢……我以前就是这样做的,我很高兴我这样做不仅仅是为了走捷径,不符合惯例。我想知道内置嵌套资源路由是否是实现这一点的“Rails方式”。