0

不确定我是否要正确描述这一点:

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

从理论上讲,我想在 ajax 中完成这一切,但我只是想了解 rails 和 pushState /history 的东西。

现在,我在节目中列出了剧集的所有内容都在“正常工作”,当点击时,我会转到友好 ID 工作的嵌套剧集页面(即 show/first-show-title/episode/episode-one-title )。

我最终想要的是每个剧集都有自己的 url,但显示在节目页面本身 - 即参数是使用节目控制器拾取的,并且正确的视频会部分加载剧集视频。

当然,我可以模拟剧集页面,使其看起来像节目页面,并让每一集都“显示”(这是我现在要做的,直到我弄清楚这一点),但这不是 DRY 现在是吗?

4

1 回答 1

0

您不必为某些控制器操作使用同名模板。在您的 EpisodesController 中,只需像这样呈现节目页面

def show
    # do stuff, load episode
    render 'shows/show'   # instead of the default 'episodes/show'
end

您只需要确保满足其他模板的所有参数要求。if如果所选剧集存在或不存在,请使用其他条件来显示某些内容。


另一个建议需要将该 url 与 ShowsController#show 操作相匹配,并处理其中是否存在剧集参数。

def show
    if params[:episode_title]
        # load episode
    else
        # load other stuff to show overview
    end
end

不过我不知道friendly_id,所以我不知道如何指定该路线。通常,第一种方法会更干净,因为它清楚地将控制器分开而不是将它们混合在一起。

于 2013-09-12T14:44:15.537 回答