rails:在主资源页面上显示嵌套资源

时间:2013-09-12 14:29:22

标签: ruby-on-rails resources routes nested

不确定我是否要正确描述:

我有一个'show'资源和'episode'资源;一个节目可以有很多集。我还有一个Show页面,我在该节目下列出了剧集,并且(希望)在节目页面的顶部有一个视频播放器。我还应该注意到我正在使用friendly_id。

理论上我想在ajax中完成所有操作,但我只是围绕rails和pushState / history的东西。

现在我已经把所有东西都“正常”,因为一个节目列出了剧集,当点击时我会进入带有friendly_id工作的嵌套剧集页面(即show / first-show-title / episode / episode-one-title)

我最终想要的是每集都有自己的网址,但会在节目页面中显示 - 即使用节目控制器选择参数并且正确的视频会加载部分视频集。

当然,我可以模拟剧集页面看起来像节目页面并获得每集“节目”(这是我现在要做的事情,直到我弄明白这一点)但现在不是DRY吗?< / p>

1 个答案:

答案 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,所以我不知道如何指定该路线。通常,第一种方法会更加清洁,因为它清楚地将控制器分开,而不是将它们混合在一起。