Ruby on rails 为什么我会遇到路由错误?

Ruby on rails 为什么我会遇到路由错误?,ruby-on-rails,Ruby On Rails,我正在学习RoR教程,教程中创建的路由文件与在我的计算机上生成的路由文件不同。教程中的路由文件是 Lecture::Application.routes.draw.do get 'say/hello' 我的档案被删除了 Rails.application.routes.draw.do get 'say/hello' 这是否会因为我遇到路由错误而有所不同: 路由错误没有匹配的路由[GET]“/say/hello” 原因是什么?您需要指定路线通向何处。 例如:() 或者在您的情况下: g

我正在学习RoR教程,教程中创建的路由文件与在我的计算机上生成的路由文件不同。教程中的路由文件是

Lecture::Application.routes.draw.do
  get 'say/hello'
我的档案被删除了

Rails.application.routes.draw.do
  get 'say/hello'
这是否会因为我遇到路由错误而有所不同:

路由错误没有匹配的路由[GET]“/say/hello”


原因是什么?

您需要指定路线通向何处。 例如:()

或者在您的情况下:

get 'say/hello', to: 'say#hello'
格式设置为“控制器名称”#控制器动作”

要定义操作,请使用:

def hello
  #This is my hello action
end

如果在该控制器中有
say
控制器和
hello
方法

变,

get 'say/hello', to: 'say#hello'
对,

观察,
”/say/hello'

如果你没有那个控制器

rails控制台中键入
rake routes
,并更新您的问题。

\config/routes.rb
#config/routes.rb

get 'say/hello' => 'say#hello' #Here say is controller and hello is action

#controllers/say_controller.rb

class SayController < ApplicationController
  def hello
    ...
  end
end
获取“say/hello”=>“say#hello”#这里say是控制器,hello是动作 #控制器/say_controller.rb 类SayController
您的控制器文件应该是:

say_controller.rb

Class SayController < ApplicationController
  def hello
   puts 'hello there'
  end
end

这就应该做到了

rake路由的输出是什么我输入了rake路由,得到了:前缀动词URI模式控制器#Action say#u hello GET/say/hello(:format)say#helloHi,欢迎使用堆栈溢出。你能把
rake路径
的输出放到你的原始问题中吗?评论中的格式很难阅读…:P:)注意:差异的原因可能是rails版本的差异。教程说它使用的是什么版本?你使用什么版本?如何找到rake routes输出?本教程使用4.0,我使用的是4,那么有没有办法将我尝试过的“get'say/hello”代码“转换”为:“say'hello'”,并得到相同的错误控制器的名称是什么?您是否定义了“hello”动作?控制器是“say”,动作“hello”是在控制器中定义的。这就是我不理解错误信息的原因。它说没有路线,但在我看来,那里有一条路线。
#config/routes.rb

get 'say/hello' => 'say#hello' #Here say is controller and hello is action

#controllers/say_controller.rb

class SayController < ApplicationController
  def hello
    ...
  end
end
say_controller.rb

Class SayController < ApplicationController
  def hello
   puts 'hello there'
  end
end
routes.rb

get '/anything/you_want/', to 'say#hello'