44

単数にしたい検索ルートがあるのですが、単数のルートを指定すると複数のコントローラルートが作成されてしまいます。

resource :search

私に与えます

 search POST        /search(.:format)        {:action=>"create", :controller=>"searches"}
 new_search  GET    /search/new(.:format)    {:action=>"new", :controller=>"searches"}
 edit_search GET    /search/edit(.:format)   {:action=>"edit", :controller=>"searches"}
             GET    /search(.:format)        {:action=>"show", :controller=>"searches"}
             PUT    /search(.:format)        {:action=>"update", :controller=>"searches"}
             DELETE /search(.:format)        {:action=>"destroy", :controller=>"searches"}

複数コントローラーの「検索」

私は本当に1つのルートしか持っていません...検索を作成するには:

だから私はした: match "search" => "search#create"

コントローラーを複数形のままにしておくべきかどうか、将来のことを考えているだけですか?レール 3.0.9

4

4 に答える 4

43

はい、それが本来あるべき姿です。ルーティングに関する Rails ガイドからの引用:

単一のルート (/account) と複数のルート (/accounts/45) に同じコントローラーを使用する場合があるため、単一のリソースは複数のコントローラーにマップされます。

http://edgeguides.rubyonrails.org/routing.html#singular-resources

于 2011-08-04T10:24:49.843 に答える
24

config / initializers / inflections.rbで、複数形の「検索」を数えられないように設定することで、これを修正できます。

ActiveSupport::Inflector.inflections do |inflect|
   inflect.uncountable %w( search )
end

これで、検索のみを使用できるようになります

于 2011-08-04T11:01:15.143 に答える
6

検索は本当にリソースですか? そうである場合、作成するのは「検索」タイプのモデルのインスタンスです。この場合、複数のコントローラー「検索」は完全に理にかなっています。

ただし、複数のモデルがないコントローラーの場合は、そうでない可能性があります。その場合、ルートを定義する必要はありません。resource :search単純get 'search/create'に、「検索」コントローラーの「作成」アクションに対して「検索/作成」に応答するようにルーターに指示するために使用できます。

于 2011-08-04T11:03:57.867 に答える
6

作成のために 1 つのルートだけを生成しますか?

もしそうなら:

resource :search, :only => :create

REST リソースのコントローラーの名前がsearchs_controller であるという事実は、規則です (ルート内のコントローラーの名前を で強制することによって変更できますが、resource :search, :only => :create, :controller => :searchそれだけの価値はありません...)。

于 2011-08-04T10:28:14.613 に答える