我有两个不同的控制器,其中一个叫电影,另一个叫电影文章。我真的希望它们都位于相同的路径/movies
下,这样我就可以将电影标题和文章都放在相同的路径下。我只会对其中之一使用#index,但在routes.rb
resources :movie_articles, :path => "movies", :only => [:index, :show]
resources :movies, :path => "movies", :only => [:show]
用于
之类的网址/movies/top-10-best-mafia-movies (article)
/movies/godfather-2 (movie)
基本上,因此当Rails尝试查找“教父2”并且在movie_articles
中找不到它时,它将继续在movies
下查找它。我很确定这适用于root_path,但似乎不适用于这样的子路径。
有可能吗?在那种情况下应该怎么做?
答案 0 :(得分:1)
“在一个路径下共享两个不同的控制器动作”是不可能的,因为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