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 アクションによってオーバーライドされるアクションとそうでないアクションをどこで見つけることができるかということだと思います。非常にイライラ...