0

Rails を初めて使用し、クラシック ブログ アプリケーションの作成から始まるチュートリアルに従ってください。

実行中: Rails 3.2.3 および Ruby 1.9.2

新しい Rails プロジェクトを作成することから始めて、スキャフォールディングを生成して Entry コントローラーとビューを作成します。次に、rake db:migrate を使用して、mysql データベース サーバーにエントリ テーブルを作成しました。

Rails サーバー (WEBrick 1.3.1) を起動し、ブラウザで 0.0.0.0:3000/entries を指定すると、正常に動作し、デフォルトで index アクションに移動します。

しかし、ブラウザで /entries/index を指定しようとするとエラーが返されることに驚きました。私のエントリコントローラーには、次のアクションが含まれています:インデックス、表示、新規、編集、作成、更新、破棄。これらのうち、実際に機能するのは /entries/new への移動だけで、残りは :id のデフォルトで上書きされているようです。

routes.rb には次の 2 行が含まれます。

Mydiary::Application.routes.draw do

リソース:エントリ

コントローラーのアクションにアクセスするためのデフォルトの形式は、http://[ホスト名]/[コントローラー]/[アクション] だと思いました。したがって、アクションをデフォルトで index に指定しないことは理にかなっていますが、率直に言って、http://[hostname]/entries/index が機能しないことに驚きました。これにはどのような理由が考えられますか?残りを確認すると、新しいアクションのみが機能しているように見えます。残りはすべて :id で上書きされます。

ところで、これはチュートリアルで述べられていることと一致しません。これは、これが Rails 3 の新機能であることを示しています。

したがって、私の質問は、デフォルトで :id アクションによってオーバーライドされるアクションとそうでないアクションをどこで見つけることができるかということだと思います。非常にイライラ...

4

4 に答える 4

1

実行するrake routesと、次のような出力が表示されます。

entries     GET      /entries(.:format)           entries#index
            POST     /entries(.:format)           entries#create
new_entry   GET      /entries/new(.:format)       entries#new
edit_entry  GET      /entries/:id/edit(.:format)  entries#edit
entry       GET      /entries/:id(.:format)       entries#show
            PUT      /entries/:id(.:format)       entries#update
            DELETE   /entries/:id(.:format)       entries#destroy

基本的に、これにより次の結果が得られます。

  • エントリのリストを取得するには、 を実行しますGET /entries
  • フォームからデータを投稿して新しいレコードを作成し、POST /entries
  • 新しいエントリを作成するためのフォームを取得し、実行しますGET /entries/new
  • 特定のエントリを編集するGET /entries/:id/edit
  • 特定のレコードの詳細を表示する,GET /entries/:id
  • 特定のエントリの値を更新します。PUT /entries/:id
  • 特定のレコードを削除/破棄する、DELETE /entries/:id

これらすべてを学び始めるのに最適な場所は、Rails Guide - Rails Routing from the Outside Inです。

于 2012-05-06T03:51:32.553 に答える
0

コマンドラインから rake routes を実行すると、すべてのルートを表示できます。リソース ルートはすべてのデフォルト アクションのルートを生成しますが、すべてがコントローラ/アクション/パラメータ パターンに従っているわけではないことがわかりました。

于 2012-05-06T03:36:46.057 に答える
0

特定のコントローラーのルートを表示するには:

CONTROLLER= rake routes 例: CONTROLLER=documents rake routes

名前空間の場合:

CONTROLLER=api/facebooks レーキ ルート

CONTROLLER=admin/users rake ルート

于 2013-05-03T05:44:48.117 に答える
0

ルートについてはこちらのページをご覧ください。リソースを使用するときに作成されたルート、パス名、HTTP メソッド、対応するアクションなどを一覧表示する非常に役立つテーブルがあります。

于 2012-05-06T03:40:30.860 に答える