Ошибка маршрута рейка "Отсутствует: ключ действия при определении маршрутов"
Я получаю
$ rake routes
rake aborted!
ArgumentError: Missing :action key on routes definition, please check your routes.
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:243:in `default_controller_and_action'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:117:in `normalize_options!'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:65:in `initialize'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:1487:in `new'
/usr/local/r................
Вот мой Routes.rb
Rails.application.routes.draw do
get 'script/index'
get 'landing/index'
root 'landing/index'
end
Что вызывает проблему и как ее исправить.
Ответы
Ответ 1
Маршрутизатор Rails распознает URL-адреса и отправляет их действию контроллера. Ошибка вызвана пропуском сопоставленного действия.
Rails.application.routes.draw do
# url action
get 'script/index' => 'script#index'
get 'landing/index' => 'landing#index'
root 'script#index'
end
Ответ 2
Вы можете сделать это по-разному, все это работает:
- get 'script/index'
- get 'script/index' = > 'script #index'
- get 'script/index', to: 'script #index'
Подумайте о пути первом и методе контроллера #.
Корень - это особый случай, всегда: корень script #index
Ответ 3
Изменить
root 'landing/index'
в
root 'landing#index'
Ответ 4
У меня была ошибка с ошибкой rails g
.
Если вы запустите команду, использующую routes.rb
, для работы команды файл должен быть без ошибок.
В вашем случае у вас были пути, но вы не соответствовали им действиям, поэтому файл routes.rb
был сломан. Вам понадобилось что-то вроде get 'landing/index' => 'my_controller#my_action'
Ответ 5
Калейдоскоп работает очень хорошо. Ниже приведен немного сжатый вариант.
Rails.application.routes.draw do
get 'script/index'
get 'landing/index'
root 'script#index'
end
Rails добавить левую сторону стрелки (= > ), заменив /
на #
условным обозначением.