0

新しいユーザー プロファイル ページを Rspec でテストする際に問題が発生しています。ブラウザ経由で動作していますが、Rspec が爆発しています。

プロファイルフィールドを編集するための別のコントローラーを備えたデバイスを使用しています。

リクエスト仕様です。

    it 'Shows the user profile with their non-private data' do
      visit user_path(@user)
      page.should have_content @user.full_name
    end

次のエラーで失敗します。

 Failure/Error: visit user_path(@user)
 ActionController::RoutingError:
   No route matches {:action=>"show", :controller=>"users"}

同意しません

#routes.rb
devise_for :users, :controllers => {:registrations => "registrations"}
  resources :users, :only => [:edit, :update, :show]

update および edit path ヘルパーは問題なく動作しています。

コントローラーのアクション:

    class UsersController < ApplicationController
      layout 'profile', :except => [:show]
      #... edit and update omitted

      def show
        @user = User.find(params[:id])
      end
    end

rake ルートが表示されます:

                                new_user_session GET    /users/sign_in(.:format)                      devise/sessions#new
                  user_session POST   /users/sign_in(.:format)                      devise/sessions#create
          destroy_user_session DELETE /users/sign_out(.:format)                     devise/sessions#destroy
                 user_password POST   /users/password(.:format)                     devise/passwords#create
             new_user_password GET    /users/password/new(.:format)                 devise/passwords#new
            edit_user_password GET    /users/password/edit(.:format)                devise/passwords#edit
                               PUT    /users/password(.:format)                     devise/passwords#update
      cancel_user_registration GET    /users/cancel(.:format)                       registrations#cancel
             user_registration POST   /users(.:format)                              registrations#create
         new_user_registration GET    /users/sign_up(.:format)                      registrations#new
        edit_user_registration GET    /users/edit(.:format)                         registrations#edit
                               PUT    /users(.:format)                              registrations#update
                               DELETE /users(.:format)                              registrations#destroy
                     edit_user GET    /users/:id/edit(.:format)                     users#edit
                          user GET    /users/:id(.:format)                          users#show
                               PUT    /users/:id(.:format)                          users#update

そのため、devise がルートに干渉しているようには見えません。さらに重要なことに、すべてがブラウザで機能します。ここで何が欠けていますか?

また、デフォルトのショーの代わりに profile というメンバーアクションを作成してみましたが、同じ結果が得られました

4

1 に答える 1

0

ここでの問題は、新しいブロックを開始し、ブロックの前にcontextセットアップしなかったことです。ルートのことはただのニシンでした。@userit

また、理解できない場合は、コードからしばらく離れる必要があることも証明します。

于 2012-05-22T12:25:10.320 に答える