1

私はルートについてのきちんとしたRubyonRailsチュートリアルに従っています。だから私は疑問に思っています、ルーティングはどのようにそんなに知っていますか?

私はposts_controllerと呼ばれる1つのコントローラーとpostモデルを持っています。ルート.rbファイルに、私は追加しました

# config/routes.rb
resources :posts

私が理解している限り、これにより、投稿に関連付けられているすべてのコントローラーアクションに適切なルーティングが自動的に作成されます。これまでのところ、posts_controllerには1つのメソッドしかありません。

# app/controllers/posts_controller.rb
def index

end

しかし不思議なことに、私が実行すると

$ rake routes

それは私にこれをすべて与えます:

    posts GET    /posts(.:format)          posts#index
          POST   /posts(.:format)          posts#create
 new_post GET    /posts/new(.:format)      posts#new
edit_post GET    /posts/:id/edit(.:format) posts#edit
     post GET    /posts/:id(.:format)      posts#show
          PUT    /posts/:id(.:format)      posts#update
          DELETE /posts/:id(.:format)      posts#destroy

ルーティングメカニズムは、投稿を作成および更新できるようにしたいと言わずに、どのようにして多くのことを知っていますか?

4

2 に答える 2

3

「リソース」の使用は、定義したアクションとは何の関係もありません。コントローラで必要になる可能性のあるすべてのRESTfulルートを作成するだけです。

ご覧のとおり、作成:インデックス作成、作成、新規作成、編集、表示、更新、破棄

存在しないアクションのルートを作成するため、実際にはインテリジェントではありません。

必要なアクションのみに制限する方法の例。

resources :posts, :only => [:show, :index]
于 2012-09-12T23:45:50.450 に答える
2

Ruby on Railsガイドの「リソースルーティング:Railsのデフォルト:」

リソースルーティングを使用すると、特定のリソースフルコントローラーのすべての共通ルートをすばやく宣言できます。インデックス、表示、新規、編集、作成、更新、破棄の各アクションに個別のルートを宣言する代わりに、リソースの豊富なルートは1行のコードでそれらを宣言します。

これは、ルートを簡単かつ迅速に定義するRailsの方法です。コントローラのメソッドは調べません。

それがどのように機能するかについてのあなたの理解は正しいです。そうは言っても、すべてのルートが必要ではなく、インデックス作成、作成、更新のみが必要な場合は、次のように選択できます。

resources :posts, :only => [:index, :create, :update]
于 2012-09-12T23:45:38.563 に答える