Railsの“ routes.rb”をいじる必要がありますかファイル?
-
03-07-2019 - |
質問
map.root
を呼び出してデフォルトのルートを設定する以外に、 routes.rb
にタッチすることはありません。私は常にフォームのURLを使用することに満足しています...
/controller/action/perhaps_an_id
そしてそれは正常に動作します。
これは私を悪い人にしますか?完全に素晴らしいものを見逃していますか?
RESTfulデザインを採用しようとしたらどうなりますか?つまり、 routes.rb
を編集する必要があるのでしょうか、それとも快適に無視し続けることができますか?
(The Rails Wayでこのトピックを読み上げようとしましたが、耐えられませんでした。)
解決
デフォルトのscaffoldingを使用してリソースを生成すると、rests.rbにrestfulルーティングが含まれます。
scaffoldを使用していない場合、scaffoldが機能している理由は、デフォルトで下部にあるデフォルトルートのためです:
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
私は、実稼働アプリケーション用にこれらを削除し、代わりに公開する必要があるリソースのみが公開されるようにすることがベストプラクティスであることを追ってきました。 Rails 2.2では、次の方法でmap.resourcesからRESTfulメソッドを制限することもできます。
map.resources :posts, :only => [:index, :show]
map.resources :comments, :except => [:edit]
ネストされたリソース、名前付きルートなどでできることもたくさんあります。ドキュメントには多くの例があります( http://www.railsbrain.com/api/rails-2.2.2/doc/index.html?a=M000255& name = resources )
他のヒント
特定のコントローラーやアクションなどに行く、マーケティング部門のカスタム名前付きルート(例:mycoolsite.com/free-trial)を作成することもできます。
Ryan Batesには、ルートでできるきちんとしたことのいくつかを紹介する一連のスクリーンキャストがあります: http: //railscasts.com/tags/14
RESTfulな設計に切り替えなかったからといって、あなたが悪い人になることはありません。また、変更する必要がないと感じたら、アプリを1.xのように書き続けてください。
Rails開発者の大半はRESTを採用しており、RESTに非常に満足しているようです。ここでは、すべてのプロREST引数を繰り返す必要はないと思います。
次のように、ルートファイルにリソースごとに1行追加する必要があります。
map.resources :posts
RESTfulに移行する場合は、routes.rbを編集してリソースを追加する必要があります。
map.resources :your_resource
またはネストされたリソースがある場合
map.resources :people do |person|
person.resources :ideas do |idea|
ideas.resources :bad_ones
end
end