2011-07-23 10 views
0

私は次のように定義されたコントローラのルートを持っている:シンプルなRailsのパス質問

resources :watched, :controller => "watched", :only => :index 

私はrake routesを実行すると、私は以下の取得:

watched_index GET /watched(.:format) {:action=>"index", :controller=>"watched"} 

何らかの理由で、watched_pathまたはwatcheds_pathでもないように見えます私の意見で定義される。何か案は?

+0

おっと、私は 'watchers_path'の代わりに 'watcheds_path'と入力することを意味しました。 'watchers_path'も動作しません。 – LandonSchropp

答えて

1

を動作するかどうか私に知らせて、あなたが使用する必要がありますパスは、次のいずれかです:

watched_index_path 

watched_index_url 
+0

うん、それは問題だった。しかし、なぜ 'watched_index_path'であるのか少し詳しく説明できますか?それがリソースの場合、なぜそれが 'watched_pa​​th'ではないでしょうか? – LandonSchropp

+0

経験則はこれです:rake routesは常に正確なルート情報を確認する場所です。あなたの出力を見て、最初の列はルートを表します。 _pathまたは_urlを追加して、それぞれのリンクを生成します。 – nugget

+0

ああ、私はそれを誤解していたと思う。ありがとう。 – LandonSchropp

0

あなたが使用しているresourcesので、Railsは、あなたのリソースを複数形されています

> 'watched'.pluralize 
=> "watcheds" 

あなたconfig/initializers/inflections.rb手動複数形を定義することができますが、彼らは唯一のことだので、あなたは、あなたのリソースのための名詞に固執する必要がありますそれは意味をなさない誰が監視されていますか?このリソースは実際に何を示していますか?不規則な変曲を定義する

例:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'thesinglewatched', 'themanywatched' 
    # or... 
    inflect.uncountable 'watched' 
end 
+0

この場合、Watchedは、いくつかの異なるモデルとユーザーとの間の多型関係を定義します。したがって、将来的に可能性があるため、何が見られているのかを実際に言うことはできません。私は変態について知らなかった。これまでのことを達成するためのより簡単な方法のように思えるので、これをもっと詳細に調べなければなりません。多元化については、私は元の投稿にミスタイプしました。私は 'watchers_path'もうまくいきませんでした。 – LandonSchropp

+0

多態性エンティティを持つ場合、リソースの名前は 'watchable'になります。 –

0

watcheds_pathを試してみて、これはすくいルートからあなたの出力によると