0

我正在尝试在登录和注册后重定向到特定页面。我有两个模型用户和资源。登录后,我想显示属于用户的文档列表。如果没有文档,那么它应该重定向到 users/:id/document#create 否则 users/:id/document#index。

有什么建议我该怎么做?

我的控制器中定义的重定向路径出现以下错误。

ActiveRecord::RecordNotFound in DocumentsController#show

找不到没有 ID 的文档

Application_controller.rb

def after_sign_in_path_for(user)
 user_documents_url(user)
end

路由.rb

 root :to => 'home#index'

   devise_for :users

   resources :users do
        resources :documents
   end
  devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end

路线

root        /                                        home#index
        new_user_session GET    /login(.:format)                         devise/sessions#new
            user_session POST   /login(.:format)                         devise/sessions#create
    destroy_user_session DELETE /logout(.:format)                        devise/sessions#destroy
           user_password POST   /password(.:format)                      devise/passwords#create
       new_user_password GET    /password/new(.:format)                  devise/passwords#new
      edit_user_password GET    /password/edit(.:format)                 devise/passwords#edit
                         PUT    /password(.:format)                      devise/passwords#update
cancel_user_registration GET    /cancel(.:format)                        devise/registrations#cancel
       user_registration POST   /                                        devise/registrations#create
   new_user_registration GET    /sign_up(.:format)                       devise/registrations#new
  edit_user_registration GET    /edit(.:format)                          devise/registrations#edit
                         PUT    /                                        devise/registrations#update
                         DELETE /                                        devise/registrations#destroy
       user_confirmation POST   /confirmation(.:format)                  devise/confirmations#create
   new_user_confirmation GET    /confirmation/new(.:format)              devise/confirmations#new
                         GET    /confirmation(.:format)                  devise/confirmations#show
          user_documents POST   /users/:user_id/documents(.:format)      documents#create
      new_user_documents GET    /users/:user_id/documents/new(.:format)  documents#new
     edit_user_documents GET    /users/:user_id/documents/edit(.:format) documents#edit
                         GET    /users/:user_id/documents(.:format)      documents#show
                         PUT    /users/:user_id/documents(.:format)      documents#update

        /user/:user_id/documents(.:format)       user/documents#index

谢谢

4

3 回答 3

0

正如我所见,代码本身没有问题。但是您需要在此测试之前通过 FactoryGirl 或存根构建一些“文档”数据。

因为你真的没有任何用户的“文档”数据,当然 Rails 会给你 RecordNotFound 错误。

于 2013-03-28T06:04:36.087 回答
0

根据以下代码使用此方法

  def after_sign_in_path_for(resource_or_scope)
     // redirect path
  end

我希望这个能帮上忙

于 2013-03-28T06:20:00.903 回答
0

我通过关注这个问题解决了我的问题。以下是我的 routes.rb

   resources :users do
        resources :documents, only: [:index]
   end
   resource :documents, except: [:index]

这给了我 document#index 路径以及 document#new 路径。

于 2013-03-29T13:17:31.420 回答