嵌套控制器/ URL

时间:2013-09-19 19:25:25

标签: ruby-on-rails controller ruby-on-rails-4 nested

我有一个Albums脚手架,并且给定相册的当前Show Action网址为:

http://localhost:3000/albums/Test

因此任何给定的相册属于用户,我正在努力设置嵌套链接(?),所以网址看起来像这样:

http://localhost:3000/user/albums/Test

前一段时间,当我为设计用户执行用户个人资料页面时,我将路线更改为:

# User Profile
get "users/show"
get 'user/:id' => 'users#show', as: :user

我试图模仿相册的这个动作,但没有。

整个想法是:

要保持albums_path相同,以便可以在localhost:3000/albums内查看相册,只需打开相册(显示),然后网址将更改为localhost:3000 / user / testuser / albums / albumname。

有了这个,我试图避免相册名称中的重复,因为会有很多。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

get ':user_id/albums/:name', :to => 'albums#show', :as => :album

要在视图中访问它,您将传递以下内容:

Check out my band's new <%= link_to @album.name, album_path(user_id: X, name: @album.name) %>

并在网址中看起来像这样:

http://localhost:3000/2/albums/Music_for_Airports 
#note that the formatting for the album name could be tricky to get right!  

答案 1 :(得分:0)

还有另一种方法可以做到这一点。我想到的是这样的事情

resource :users do
  resources :albums
end

但是仍然会将您的link_path参数更改为user_albums_path