Rails路由中两个不同控制器的共享路径



我有两个不同的控制器,其中一个称为电影,另一个名为电影文章。我真的希望它们都位于同一路径/movies下,这样我就可以在同一路径下拥有电影标题和文章。我只会对其中一个使用#index,但希望在routes.rb中使用它

resources :movie_articles, :path => "movies", :only => [:index, :show]
resources :movies, :path => "movies", :only => [:show]

用于url,如

/movies/top-10-best-mafia-movies (article)
/movies/godfather-2 (movie)

基本上,当Rails试图查找"教父-2"但在movie_articles中找不到它时,它将继续在movies下查找它。我确信这适用于root_path,但它似乎不适用于像这样的子路径。

有可能吗?在这种情况下,应该怎么做?

这是不可能的,因为rails需要决定在页面url中查找-现在应该调用哪个控制器操作?但你可以在一个动作下(在任何控制器中(完成

def show
@record = MovieArticle.find_by(id: params[:id]) # use find_by to don't get 404
@record ||= Movie.find(params[:id])
end

最新更新