2017-03-15 27 views
0

我正在遵循RoR教程,本教程中生成的路由文件与我在计算机上生成的文件不同。在本教程中的一个是我为什么会收到路由错误?

Lecture::Application.routes.draw.do 
    get 'say/hello' 

我的文件gererated

Rails.application.routes.draw.do 
    get 'say/hello' 

这是否有所作为,因为我得到一个路由错误:

Routing Error No route matches [GET] "/say/hello"

,这是什么原因呢?

+0

什么是耙路线的输出 –

+0

我输入耙路线,并得到这个:前缀动词URI模式控制器#动作 say_hello GET /say/hello(.:format)say#hello – Owen

+0

嗨,欢迎来到Stack Overflow。你能否把'rake route'输出放到你原来的问题中?在评论中格式化真的很难阅读......:P :)注意:差异的原因可能是rails版本的差异。该教程使用哪个版本?你使用什么版本? –

回答

0

您需要指定路线所在的位置。 例如:(Rails Routing from the Outside In

get '/patients/:id', to: 'patients#show' 

或你的情况:

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

的到格式化 'CONTROLLER_NAME#controller_action'

要定义一个动作使用:

def hello 
    #This is my hello action 
end 
+0

我尝试过“get'say/hello',以:'say#hello'”并得到相同的错误 – Owen

+0

控制器的名称是什么?你有没有定义“你好”的动作? – AytanLeibowitz

+0

控制器是“说”,并在控制器中定义动作“你好”。这就是为什么我不明白错误信息。它说有没有路线,但有一条路线,据我所知。 – Owen

0

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

变化,

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

到,

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

观察,'/say/hello'

如果你没有该控制器,

rake routesrails console并更新你的问题。

0
#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 
0

控制器的文件应该是:

say_controller.rb 

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

您的routes.rb文件应包含:

routes.rb 

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

这应该做的伎俩

相关问题