ActionController::RoutingError Нет подходящих маршрутов [GET] "/ Stories"
ОС: openSUSE 11.4 Rails 3.2.0
Я только что создал очень простое приложение "Коко". Вот порядок команд, которые я запускал
rails new koko
rails generate model Story name:string description:string
rake db:migrate
rails generate controller Stories index
Все вышеперечисленные команды выполнены успешно. Затем я запустил =>rails server, чтобы запустить сервер. localhost:3000/ работает нормально.
Когда я пытаюсь сделать localhost:3000/stores, я получаю следующую ошибку: (браузер отображает первую строку о Нет совпадений маршрутов)
Started GET "/stories" for 127.0.0.1 at Sat Aug 04 12:52:02 -0400 2012
ActionController::RoutingError (No route matches [GET] "/stories"):
actionpack (3.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (3.2.0) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.0) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.0) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.0) 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.0) 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.0) lib/action_dispatch/middleware/static.rb:53:in `call'
railties (3.2.0) lib/rails/engine.rb:479:in `call'
railties (3.2.0) lib/rails/application.rb:220:in `call'
rack (1.4.1) lib/rack/content_length.rb:14:in `call'
railties (3.2.0) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
/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.0) lib/rails/commands/server.rb:70:in `start'
railties (3.2.0) lib/rails/commands.rb:55
railties (3.2.0) lib/rails/commands.rb:50:in `tap'
railties (3.2.0) lib/rails/commands.rb:50
script/rails:6:in `require'
script/rails:6
Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.2.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.9ms)
2 ответа
Вы можете просто иметь некоторые проблемы с именами. Как правило, при создании контроллера это должно быть
rails g controller stories index
или же
rails g controller Story index
Затем измените автоматически созданный маршрут на
match "/stories" => "stories#index", :as => "stories"
Ваша проблема в том, что вы пытаетесь использовать интерфейс RESTful для ресурса, не являющегося RESTful. Вы сделали модель, и вы сделали контроллер с действием индекса, (/controller_name/action
).
Если вы довольны использованием /stories/index
тогда мы закончили! Если вы предпочитаете более традиционный интерфейс RESTful /stories
тогда я бы предложил использовать:
rails generate resource ModelName fields:types
,
Это создаст Модель и Контроллер, и должно работать спокойно из коробки. Это позволит настроить маршрут, который был упомянут в комментариях.
Надеюсь это поможет!