1

私は Patrick Lenz の Simply Rails を読んでいました... 多分私は何かを見逃していたようです。

map.resources :stories

routes.rb で

すぐに、コントローラーには特別な規則があり、Story は RESTful リソースになりますか? おそらく、著者はリソースという言葉を使用しましたが、RESTful であるとは言及していませんでしたが、それらは同じものですか?

4

3 に答える 3

4

ルートにそれがあるということは、安らかなアプリケーションを構築するのに役立ついくつかの標準ルートを自動的に取得することを意味します。例えば:

 new_story GET     /story/new(.:format)  {:action=>"new", :controller=>"stories"}
edit_story GET     /story/edit(.:format) {:action=>"edit", :controller=>"stories"}
     story GET     /story(.:format)      {:action=>"show", :controller=>"stories"}
           PUT     /story(.:format)      {:action=>"update", :controller=>"stories"}
           DELETE  /story(.:format)      {:action=>"destroy", :controller=>"stories"}
           POST    /story(.:format)      {:action=>"create", :controller=>"stories"}

ルート ファイルにこの 1 行を含めるだけで、使用するこれらすべてのパスが得られます。ストーリー コントローラーの新規作成、編集、表示、更新、破棄、および作成アクションで適切な機能を提供することを確認するだけで、安らかなデザインが得られます。

ルートごとに利用可能なものを確認するには、アプリケーション フォルダーに移動して次のコマンドを実行します。

rake routes

これにより、routes ファイルに入力した内容に基づいて、利用可能なすべてのパスが出力されます。

于 2009-05-24T14:07:34.153 に答える
2

しかし!!!コントローラーに他のアクションがある場合、その .resources 行の上に追加のルートを導入しない限り、それらは見つかりません!

したがって、ストーリー コントローラに turn_page というアクションがある場合は、次のスニペットのように、map.resources 行の前に map.connect 行を含める必要があります。

map.connect 'stories/turn_page', :controller => 'stories', :action => 'turn_page'
map.resources :stories

それが誰かを助けることを願っています! すべての例が「通常の」ルートまたは .resources ステートメントで定義された REST セットのいずれかであるため、私はこれに何時間も取り組んでいました。

于 2009-09-09T02:27:50.123 に答える
1

はい。これをルートに追加すると、Story コントローラーは一般的な REST 動詞に期待どおりに応答します。

于 2009-05-24T14:07:36.290 に答える