2013-05-01 102 views
0

比賽我有我的規格測試的錯誤,我不知道如何解決它:::的ActionView ::模板錯誤:沒有路線rspec的

An error occurred in an after hook 
    ActionView::Template::Error: No route matches {:controller=>"users", :action=>"show", :name=>#<User id: 1, email: "[email protected]", encrypted_password: "$2a$04$z8LP2/rW7vhP9lYQ2bSrCeZ5ASYG2O8XUgRwI3/1R2aJ...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2013-05-01 17:21:03", last_sign_in_at: "2013-05-01 17:21:03", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2013-05-01 17:20:59", updated_at: "2013-05-01 17:21:03", name: nil, role: "user">} 
    occurred at /Users/ejiqpep/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:533:in `raise_routing_error' 

我的測試是:

before(:each) do 
    user = FactoryGirl.create(:user) 
    login_as(user, :scope => :user) 
    end 
    it "shouldn't allow user to delete last ingredient field", :js => true do 
    visit new_recipe_path 
    current_path.should == new_recipe_path 
    click_link('Remove') 
    page.should have_css('.ingredients-form') 
    end 

問題出在我的佈局頁面上。當我評論這條線時,所有的作品。但我自己可以單擊該鏈接並僅在測試中出現錯誤。

= link_to current_user.email, current_user, :class => 'btn' 

users_controller.rb

class UsersController < ApplicationController 
    def show 
    @user = User.find_by_name(params[:id]) 
    end 
end 

的routes.rb

EcookRails::Application.routes.draw do 
    devise_for :users 
    devise_scope :user do 
    get '/login' => 'devise/sessions#new' 
    post '/login' => 'devise/sessions#create' 
    get '/logout' => 'devise/sessions#destroy' 
    get '/register' => 'devise/registrations#new' 
    end 
    resources :recipes 
    resources :users 

    match 'favorites/:recipe_id' => 'favorites#create', :as => :favorite 
    root :to => 'recipes#index' 

end 

我認爲這個問題可以在我的RSpec用戶loggining。我使用Devise方法授權水豚。

我耙路輸出:

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)   devise/registrations#cancel 
     user_registration POST /users(.:format)    devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)  devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)   devise/registrations#edit 
         PUT /users(.:format)    devise/registrations#update 
         DELETE /users(.:format)    devise/registrations#destroy 
        login GET /login(.:format)    devise/sessions#new 
         POST /login(.:format)    devise/sessions#create 
        logout GET /logout(.:format)    devise/sessions#destroy 
       register GET /register(.:format)    devise/registrations#new 
       recipes GET /recipes(.:format)    recipes#index 
         POST /recipes(.:format)    recipes#create 
       new_recipe GET /recipes/new(.:format)   recipes#new 
      edit_recipe GET /recipes/:id/edit(.:format)  recipes#edit 
        recipe GET /recipes/:id(.:format)   recipes#show 
         PUT /recipes/:id(.:format)   recipes#update 
         DELETE /recipes/:id(.:format)   recipes#destroy 
        users GET /users(.:format)    users#index 
         POST /users(.:format)    users#create 
       new_user GET /users/new(.:format)   users#new 
       edit_user GET /users/:id/edit(.:format)  users#edit 
        user GET /users/:id(.:format)   users#show 
         PUT /users/:id(.:format)   users#update 
         DELETE /users/:id(.:format)   users#destroy 
       favorite  /favorites/:recipe_id(.:format) favorites#create 
        root  /        recipes#index 
+0

我們可以看到您的路線文件嗎? – Deekor 2013-05-01 18:16:21

+0

我已添加routes.rb – user220989 2013-05-01 18:30:27

+0

在您測試中,您是否登錄了用戶?否則,如果在您的應用程序中爲了訪問該鏈接而需要登錄,則無法找到該路線。 – PericlesTheo 2013-05-01 18:33:09

回答

0

如果你不具備以下部分的RSpec的配置,添加它,看看是否是問題。

config.before(:each, js: true) do 
    DatabaseCleaner.strategy = :truncation 
end 
+0

我已將此代碼添加到我的spec_helper.rb中,但我仍然有此錯誤。我的代碼有:config.before(:套件)做 DatabaseCleaner.strategy =:截斷 DatabaseCleaner.clean_with(:截短) 端 config.before(:每個)做 DatabaseCleaner.start 端 配置。經過(:每個)做 DatabaseCleaner.clean 結束 config.before(:每次,JS:真)做 DatabaseCleaner.strategy =:截斷 結束 – user220989 2013-05-01 18:41:34

+0

你能後的'耙routes'命令的結果?出於某種原因,您嘗試使用:name部分解析路徑時出現錯誤...順便說一下,當您通過工廠創建用戶時,是否可以爲其name屬性指定非零值? – 2013-05-01 18:54:23

+0

我用耙路線更新了我的問題 – user220989 2013-05-01 18:56:42

相關問題