我是Rails的新手。我试图在rails示例应用程序中启用命名路由的使用。当我执行以下操作并尝试在浏览器中访问该页面时,我会将操作控制器:异常捕获作为标题,并发送no route matches
消息。
配置/ routes.rb中
SampleApp::Application.routes.draw do
# root to: 'static_pages#home' #matches '/'
root to: 'static_pages#home'
match '/help', to: 'static_pages#help', via: [:get, :post] (*)
match '/about', to: 'static_pages#about', via: [:get, :post] (*)
match '/contact', to: 'static_pages#contact', via: [:get, :post] (*)
[...comments...]
end
我在控制器中有必要的操作。我也有视图,但没有一个是错误消息。确切的错误消息如下:
No route matches [GET] "/static_pages/home"
我也试过root 'static_pages#home'
作为替代方案。依然没有。
(*)当我删除via: [:get, :post]
时,浏览器会抛出一个RuntimeError,
如果没有,请不要在路由器中使用
match
方法 指定HTTP方法。如果要将操作公开给两者 GET和POST,添加via: [:get, :post]
选项。如果你想暴露 您对GET的操作,在路由器中使用get
:而不是:匹配 “控制器#动作”做:得到“控制器#动作”
答案 0 :(得分:1)
请记住,在更改路由后,您必须重新启动服务器!
在我看来,当您的根路线定义127.0.0.1:3000/static_pages/home
127.0.0.1:3000
中打开
醇>
PS我希望它能帮到你
答案 1 :(得分:1)
Root是您访问localhost:3000的路线,因此当您访问“localhost:3000”时,它与您的情况下的static_pages / home匹配。
如果您需要将'localhost:3000 / static_pages / home'转发到相应的控制器,您还需要另外定义路径。
get 'static_pages/home'
否则我认为在更改路线后不需要重新启动服务器,除非出现问题,但主要是它无法解决问题。
答案 2 :(得分:1)
我认为这篇文章会清除你所有的疑惑, 我之前有类似的问题。
实际上当你在浏览器中选择URL时,你错了 正试图访问
local:3000/static_pages/home
何时应该尝试访问`
local:3000/home
正如你所说的那样 教程,在适当的时候你会明白为什么“匹配”不是 接受但暂时你应该继续你的“路线” 格式。 一个重要的事情是你在问任何问题之前应该做一些研究,而且这个问题已经被包括我在内的其他几个人问过,没有必要发布一个重复的帖子。我希望你们都清楚一切。享受!!!