2010-12-31 6 views
0

スコープされたルートのrspecコントローラ仕様の「取得」メソッドを回避できないようです。Railsのコントローラで 'get'メソッドを実行すると、モジュールによってスコープされたコントローラの「ルートが一致しません」が返される

私は '訪問者'コントローラのルートをスコープして、訪問者のモジュールの名前空間内にあり、ルーティングのルートにあるようにしています。したがって、 'mysite.com/foo'はVisitor :: FooControllerに移動します。

のconfig/routes.rbを

scope :module => 'visitor' do 
    resources :inquiries 
end 

スペック/コントローラ/ビジター/ inquiries_controller_spec.rb

require 'spec_helper' 

describe Visitor::InquiriesController do 
    describe 'GET new' do 
    it 'should render template visitor/inquiries/new' do 
     get :new 
    end 
    end 
end 

アプリ/コントローラ/ビジター/

class Visitor::InquiriesController < Visitor::BaseController 
    def new 
    end 
end 

inquiries_controller.rbときI私は次のエラーを取得する仕様を実行します。 (:URL =>「お問い合わせ/新しい」、:例えばコントローラ=>「お問い合わせ」)を
No route matches {:controller=>"visitor/inquiries", :action=>"new"} 

は、私がgetのためにいくつかの追加のパラメータを追加してみましたが、私はこの問題を回避するように見えることはできません。ブラウザで「お問い合わせ/新着」を押すと、正常に動作し、私のルートが期待通りに機能していることがわかります。

私はrspecの新機能ですので、ここでは理解していない基本的な問題があるかもしれません。それ以外の場合は、これらの「訪問者」コントローラをテストできるように、この問題を突き抜ける方法を探しています。どんな助けもありがとう!

+0

これは分離されていますか?他のルートは機能しますか? – stef

+0

私は 'admin'コントローラ用のコントローラ仕様を試しましたが、 "get:new"は正常に動作しました。これらの「管理者」コントローラとの違いは、ルートのスコープが「管理者」(「管理者/アカウント」など)であることです。 – Mitch

+0

'Visitor :: InquiriesController'は' ApplicationController'から降下する必要がありますか? – zetetic

答えて

1

問題を働く必要があります次の日にコンピュータを再起動したときに修正されました。問題を引き起こしていたSporkの問題があるようです。私はこの質問を取り除くことができるかどうかはわかりませんが、おそらくStackoverflowに多大な価値をもたらさないでしょう。

-1

あなたのconfig/routes.rbを コメント解除フォローラインを見ておいてください。試合 ':コントローラ(/:アクション(/:IDを(:。フォーマット)))' 今では

+0

これをしないでください。これは、すべてのコントローラのアクションをGETリクエストに公開しますが、CSRFの保護の対象にはなりません。 –

関連する問題