簡體   English   中英

在 Rails 路由中共享兩個不同控制器的路徑?

[英]Share path for two different controllers in Rails routes?

我有兩個不同的控制器,一個叫做 Movies,另一個叫做 Movie Articles。 我真的希望它們都位於同一路徑/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 嘗試查找“godfather-2”並且在movie_articles中找不到它時,它會繼續在movies下查找它。 我很確定這適用於 root_path 但它似乎不適用於像這樣的子路徑。

可能嗎? 在這種情況下應該怎么做?

不可能因為“在一條路徑下共享兩個不同的 controller 動作”,因為 rails 需要決定查看頁面 url - 現在應該調用哪個 controller 動作? 但是您可以通過一個操作來完成(在任何控制器中)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM