我正在
$ 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
导致问题的原因是什么,我该如何解决。
答案 0 :(得分:47)
Rails.application.routes.draw do
get 'script/index' => 'script#index'
get 'landing/index' => 'landing#index'
root 'script#index'
end
答案 1 :(得分:10)
你可以通过多种方式实现这些目标:
首先考虑路径,然后考虑 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按惯例添加/
与#
替换箭头的左侧(=>)。