1

Ruby の学習に役立つ非常に小さなプログラムを作成しました。以下は、サーバーログから取得したエラーです。

これは私がブラウザから試している URL で、エラーが発生しました:localhost:3000/say/hello

Started GET "/say/hello" for 127.0.0.1 at Sun Jun 10 14:28:45 +0800 2012
ActionController::RoutingError (No route matches [GET] "/say/hello"):
  actionpack (3.2.5) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.5) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.5) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.5) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.5) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.5) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.5) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.5) lib/rails/engine.rb:479:in `call'
  railties (3.2.5) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.5) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
  rack (1.4.1) lib/rack/handler/webrick.rb:13:in `run'
  rack (1.4.1) lib/rack/server.rb:265:in `start'
  railties (3.2.5) lib/rails/commands/server.rb:70:in `start'
  railties (3.2.5) lib/rails/commands.rb:55
  railties (3.2.5) lib/rails/commands.rb:50:in `tap'
  railties (3.2.5) lib/rails/commands.rb:50
  script/rails:6:in `require'
  script/rails:6


  Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.2.5/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.4ms)

これは私の Gemfile コンテンツです

source 'https://rubygems.org'

gem 'rails', '3.2.5'
gem 'sqlite3'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

他のいくつかの SO スレッドを見てきましたが、特に私の問題に関連しているようには見えません。

4

2 に答える 2

2

あなたのroutes.rbには、次のいずれかが必要です。

match "say/hello" => "myController#myaction"(コントローラーとアクションを適切な値に置き換えます)

また

match ':controller(/:action(/:id))(.:format)'これにより、次のようなコードを使用できるようになります:link_to "hello", :controller => "mycontroller", :action => "myaction"またはURLを入力します(/ say / helloなど)

ユーザーは不要なURLにアクセスできないため、前者が推奨される方法です。

また、ビューは、実際の「views」ディレクトリではなく、それを使用するコントローラの名前のサブディレクトリにある必要があります。

編集:

以下の回答を見ると、ファイルをrhtmlではなくhtml.erbにする必要があります。

于 2012-06-10T08:38:00.207 に答える
0

入力bundle execute rake routesして、アプリケーション内のすべてのルーティングパスを一覧表示します。あるかどうかを確認:controller=>"say", :action=>"hello"します。

また、これはレールの安らかなルールに従わないためmatch ':controller(/:action(/:id))(.:format)'、の最後の行にある、のコメントを解除する必要があるかもしれませんconfig/routes.rb

于 2012-06-10T07:45:57.680 に答える