2011-08-28 6 views
0

Devise 1.4.2, RSpec 2.6.0 및 Rails 3.1.0.rc6을 사용 중입니다. 내 routes.rb은 다음과 같습니다 : A는, 생성 또는 업데이트, 그가 new_user_session_path에 새로운 리디렉션되어야 액세스를 사용자가 로그인하지 않을 때 나는, 그 spec'ing하고컨트롤러 사양의 리디렉션 기대치에서 오류 발생

scope "(:locale)", :locale => /e(s|n)/ do 
    resources :demotivideos, :only => [:index, :show] 
    devise_for :users 

    namespace "admin" do 
    resources :demotivideos, :except => [:index, :show] 
    end 
end 

. 이를 위해, 나는 다음과 같은 코드

context "when not logged in" do 
    before(:each) do 
    sign_out user 
    end 

    describe "GET new" do 

    it "should redirect to new user session" do 
     get :new 
     response.should redirect_to(new_user_session_path) 
    end 
    end 

    describe "POST create" do 

    it "should redirect to new user session" do 
     post :create, :demotivideo => valid_attributes 
     response.should redirect_to(new_user_session_path) 
    end 
    end 

    describe "PUT update" do 

    it "should redirect to new user session" do 
     put :update, :id => 1, :demotivideo => valid_attributes 
     response.should redirect_to(new_user_session_path) 
    end 
    end 
end 

모든 때문에 같은 이유로 실패 사용하고 있습니다 : 예상 경로 (EN 기본적으로) 로케일을 포함을하지만, 실제 리디렉션 로케일없이 동일한 경로로했다. 내가 잘못 뭐하는 거지

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    before_filter :set_locale 

    def default_url_options(options={}) 
    logger.debug "default_url_options is passed options: #{options.inspect}\n" 
    { :locale => I18n.locale } 
    end 

    def set_locale 
    I18n.locale = params[:locale] || I18n.default_locale 
    end 
end 

: Rails Guides에서 말한대로 내 응용 프로그램 컨트롤러는 수정?

답변

1

Rails Guidesdef default_url_options을 사용합니다. Devise에는 def self.default_url_options이 필요합니다. 그래도 차이는 모르겠다.