不确定我是否要正确描述:
我有一个'show'资源和'episode'资源;一个节目可以有很多集。我还有一个Show页面,我在该节目下列出了剧集,并且(希望)在节目页面的顶部有一个视频播放器。我还应该注意到我正在使用friendly_id。
理论上我想在ajax中完成所有操作,但我只是围绕rails和pushState / history的东西。
现在我已经把所有东西都“正常”,因为一个节目列出了剧集,当点击时我会进入带有friendly_id工作的嵌套剧集页面(即show / first-show-title / episode / episode-one-title)
我最终想要的是每集都有自己的网址,但会在节目页面中显示 - 即使用节目控制器选择参数并且正确的视频会加载部分视频集。
当然,我可以模拟剧集页面看起来像节目页面并获得每集“节目”(这是我现在要做的事情,直到我弄明白这一点)但现在不是DRY吗?< / p>
答案 0 :(得分:0)
您不必为某些控制器操作使用相同名称的模板。 在您的EpisodesController中,只需像这样呈现显示页面
def show
# do stuff, load episode
render 'shows/show' # instead of the default 'episodes/show'
end
您只需确保满足其他模板的所有参数要求即可。如果存在选定的剧集,请使用其他if
条件来显示某些内容。
另一个建议是要将该网址与ShowsController#show动作相匹配,并在那里处理剧集参数的存在。
def show
if params[:episode_title]
# load episode
else
# load other stuff to show overview
end
end
我不知道friendly_id,所以我不知道如何指定该路线。通常,第一种方法会更加清洁,因为它清楚地将控制器分开,而不是将它们混合在一起。