【发布时间】:2017-04-13 22:30:32
【问题描述】:
我正在努力实现以下目标:
我有一个简单的页面,访问者可以在其中查看相册列表(索引操作),并通过单击任何相册,查看每个相册的照片(显示操作)。没有其他操作(编辑、新建、更新、销毁)可以访问。
当用户登录时,她可以看到 index 和 show 页面,以及所有其他操作应该可用,但现在 index 和 show 将锁定不同。不过,这些 URL 不应该与以前有任何不同。
我创建了这些路线:
users_albums GET /users/albums(.:format) users/albums#index
users_album GET /users/albums/:id(.:format) users/albums#show
new_users_album GET /users/albums/new(.:format) users/albums#new
.... and so on ...
albums GET /albums(.:format) albums#index
album GET /albums/:id(.:format) albums#show
我还在app/controllers 和app/views 目录下创建了user 目录,我在其中放置了命名空间(登录)的用户控制器和视图。
所以现在对于访问者(无需登录),应该使用默认的控制器/视图,但是一旦用户登录(使用设计),user 目录下的控制器/视图就会接管。
如何实现此重定向?
到目前为止,这是我的 routes.rb:
devise_for :users, skip: [:registrations]
as :user do
get "/sign_in" => "devise/sessions#new" # custom path to login/sign_in
get "/sign_up" => "devise/registrations#new", as: "new_user_registration" # custom path to sign_up/registration
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
namespace :users do
resources :albums do
resources :photos
end
end
resources :albums, only: [:index, :show] do
resources :photos, only: [:index, :show]
end
root to: "albums#index"
【问题讨论】:
标签: ruby-on-rails devise