2010-12-02 10 views
0

私のhomecontrollerは次のものを持っています:私のルートはリソースを持っています:家庭ですが、rspecは経路が定義されていないと言っていますか?

def about() 
end 

そして私は「約」を得るrspecテストを持っています。

これはコントローラー内のすべてのアクションをマップしません:

resources :home 

または、ホームコントローラーの各アクションを明示的に指定する必要がありますか?

答えて

2

resources :homeは、デフォルトのRESTfulルート(インデックス、表示、新規作成、編集、更新、および破棄)を設定します。追加ルートを指定する必要があります。これはあなたのルート「/ホーム/について」を与える

resources :home 
    collection do 
    get 'about' 
    end 
end 

:あなたはこのようにそれを指定したいので、あなたは、簡単なコレクションのルートを追加しているように見えます。私は、あなたがRailsの2.xの中であれば、これはRailsの3であると仮定ので、同じようにそれを行う:

map.resources :home, :collection => {:about => :get} 

コマンドラインから、あなたは常にあなたがこのコマンドで用意しているルートを確認することができます

rake routes 

こちらがお役に立てば幸いです。

EDIT:あなたはデフォルトルートが必要な場合、あなたはこれを追加することができます。

match ':controller(/:action(/:id))' 

これは、任意の一般的な要求にマッチしますデフォルトルートです。

FULL ARTICLE: Rails 3のルーティングは、独自の獣です。そこ最近それについての質問をたくさんされているので、私は他の人を助けるために、コードサンプルと非常に詳細な記事を作成しました:

Routing in Ruby on Rails 3

私は周りを再生するためにダウンロードすることができコンパニオンのRails 3アプリケーションを作成同様に、と:ご質問があれば

https://github.com/kconrails/rails3_routing

、私のサイトを打つとお尋ね下さい。ありがとう!

+0

はいレール3、ありがとう! – Blankman

+0

それを行う方法がないのに驚いて、自動的にそれらをすべて配線する方法があるはずです... – Blankman

+0

これは私にURLヘルパーabout_homes_pathを与えますか? – Blankman

0

追加のアクションをしたい場合、リソースはあなたにコントローラの7つのCRUDメソッドを与える、あなたは以下のような何かをする必要があります。

resources :homes do 
    collection do 
    match "about" => "homes#about", :as => "about" 
    end 
end 

その後、あなたはまた、追加about_homes_path/URLヘルパーを持っています利用可能です。

関連する問題