Ruby on rails 重构Rails路线以仍然通过测试

Ruby on rails 重构Rails路线以仍然通过测试,ruby-on-rails,testing,refactoring,Ruby On Rails,Testing,Refactoring,我无法通过这个: %w[home help about contact].each do |page| get :controller => 'static_pages', :action => page end 我试图重构这段代码: get 'static_pages/home' get 'static_pages/help' get 'static_pages/about' get 'static_pages/contact' 请帮忙 stat

我无法通过这个:

  %w[home help about contact].each do |page|
    get :controller => 'static_pages', :action => page
  end
我试图重构这段代码:

  get 'static_pages/home'
  get 'static_pages/help'
  get 'static_pages/about'
  get 'static_pages/contact'
请帮忙

static_pages = %w(home help about contact).map {|p| p.to_sym}

resources :static_pages, only: static_pages do
  static_pages.each do |page|
    get page, on: :collection
  end
end
渲染

$ rake routes
   home_static_pages GET /static_pages/home(.:format)       static_pages#home
   help_static_pages GET /static_pages/help(.:format)       static_pages#help
   about_static_pages GET /static_pages/about(.:format)     static_pages#about
   contact_static_pages GET /static_pages/contact(.:format) static_pages#contact

仅使用
:静态_页面
不生成CRUD路由

我想如果你不喜欢的话:

如果你想得到同样的路线,你可以使用一个简单的循环,如:

root to: 'static_pages#home'

%w(help about contact).each do |page|
   get "#{page}" => "static_pages##{page}"
end
不过,对我来说,这似乎还不足以证明重构的合理性

编辑 要修复代码中的错误,请使用:

%w(home help about contact).each do |page|
  get "/#{page}", :controller => 'static_pages', :action => page
end

检查
get

的有效参数,看起来您正在学习Rails教程。有一个github回购协议,人们可以看看吗?是的,我有。我已经把它推到了-我已经在config/routes.rb中注释掉了重构尝试(我还可以补充说,重构这部分代码不是教程的一部分。我只是为了好玩才这么做!)我已经运行了这两个步骤,但都没有通过。很抱歉,我应该显示我的测试代码<代码>访问“/static\u pages/about”当我用这个
匹配“/static\u pages/{page}”编辑你的页面时:controller=>“static\u pages”,:action=>page
它通过了!谢谢你的帮助。
%w(home help about contact).each do |page|
  get "/#{page}", :controller => 'static_pages', :action => page
end