Rake route错误"缺失:路由定义上的操作键"

时间:2014-08-30 20:07:15

标签: ruby-on-rails ruby routes

我正在

$ 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

导致问题的原因是什么,我该如何解决。

5 个答案:

答案 0 :(得分:47)

Rails.application.routes.draw do
  get 'script/index' => 'script#index'
  get 'landing/index' => 'landing#index'
  root 'script#index'
end

答案 1 :(得分:10)

你可以通过多种方式实现这些目标:

  • 获取'script / index'
  • 获取'script / index'=> '脚本#索引'
  • 获取'script / index',以:'script #index'

首先考虑路径,然后考虑 controller#method

Root是一种特殊情况,始终: root'脚本#index'

答案 2 :(得分:4)

更改 root 'landing/index'root 'landing#index'

答案 3 :(得分:1)

我在运行rails g时遇到了同样的错误。

如果您运行使用routes.rb的命令,则该文件需要没有错误才能使该命令生效。

在您的情况下,您有路径,但您没有将它们与操作匹配,因此routes.rb文件已损坏。您需要get 'landing/index' => 'my_controller#my_action'

之类的内容

答案 4 :(得分:0)

Kaleidoscope 的代码运行得很好。以下是一个略显简洁的版本。

Rails.application.routes.draw do
  get 'script/index'
  get 'landing/index'
  root 'script#index'
end

Rails按惯例添加/#替换箭头的左侧(=>)。