【发布时间】:2014-09-28 15:07:46
【问题描述】:
需要一些 Rails 帮助(使用 rails 4.0.8 和 ruby 2.0.0)...
我正在尝试重构我的路线,而不是...
App::Application.routes.draw.do
get "static_pages/home"
get "static_pages/help"
get "static_pages/about"
get "static_pages/contact"
end
.. 在我的路线中,我将其设置为....
App::Application.routes.draw.do
root 'static_pages#home'
match '/help', to: 'static_pages#help', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
end
...但是当我这样做时,我认为“match '/about'”应该会自动创建命名路由,以便在看起来像...的控制器和视图中使用。
about_path -> '/about'
about_url -> 'http://localhost:3000/about'
...但在我的控制器中并没有这样做。所以我想,“好吧,我会手动把它们放进去”,所以我制作了 app/controllers/static_pages_controller.rb...
class StaticPagesController < ApplicationController
def home
root_path -> '/'
root_url -> 'http://localhost:3000/'
end
def help
help_path -> '/help'
help_url -> 'http://localhost:3000/help'
end
def about
about_path -> '/about'
about_url -> 'http://localhost:3000/about'
end
def contact
contact_path -> '/contact'
contact_url -> 'http://localhost:3000/contact'
end
end
...它什么也没做。所以现在当我尝试转到主页时,例如,我收到路由错误 No route matches [GET] "/static_pages/home"。
我是 Rails 开发的新手,所以我确信我在这里缺少一些相当明显的东西。任何人都可以阐明发生了什么吗?非常感谢。
用答案编辑 1
BroiSatse 和 Ako 给出了答案……
在路由配置中我错过了 as: 键,因此将我的代码更新为
App::Application.routes.draw.do
root 'static_pages#home'
match '/help', to: 'static_pages#help', via: 'get', as: :help
match '/about', to: 'static_pages#about', via: 'get', as: :about
match '/contact', to: 'static_pages#contact', via: 'get', as: :contact
end
成功了。谢谢!
【问题讨论】:
-
这不是动态路由。这些是静态路由
标签: ruby-on-rails ruby dynamic routes match