Ruby 在Rails3.x中,如何为引用父资源的嵌套资源设计视图?
假设我有一个嵌套资源,如Rails指南示例中所示: 这会将对/magages/newsweek/ads的调用路由到AdsController#索引。它需要URL中的杂志id…我应该如何创建一个基于用于广告索引的模板的视图,同时还包括父资源的上下文 例如,所有有广告的父资源都有这些广告的列表。但是我希望视图的顶部包含每个杂志的样板信息。如果/magages/newsweek/ads直接指向通用AdsController#索引,我如何使该#索引视图意识到需要包含从杂志模型生成的样板文件 如果其他模型与广告有关系(电视剧有很多:广告),我希望AdsController索引对这些也有不同的反应 编辑: 这就是我过去通过MagazinesController做这些事情的方式。假设我想要一本独立的杂志#show action#的路线是: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#索引,我如何使该#索引视图意识到需要包含从杂志模型生成的样板文件 如果其他模
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方式”。