0

I have a controller with a number of static pages and I would ideally like to route them all with a wildcard.

Is it possible to do something like the following?

get 'static/:action'
sscirrus
  • 55,407
  • 41
  • 135
  • 228

3 Answers3

2

You probably need something like get 'static/:action', to: 'static#show' and then in your StaticController show action render the correct static page based on the params[:action] parameter.

See http://guides.rubyonrails.org/routing.html#defining-defaults for more.

eugen
  • 8,916
  • 11
  • 57
  • 65
2

Why don't you just use the show action:

#config/routes.rb
resources :static, param: :page, only: :show #-> url.com/static/:page

#app/controllers/static_controller.rb
class StaticController < ApplicationController
   def show
      render "#{params[:page]}"
   end
end

This way, you can pass the "page" directly through the link and have it all handled by Rails:

 <%= link_to "About", static_path("page") %>
Richard Peck
  • 76,116
  • 9
  • 93
  • 147
1

You can route something like

get '*path', to: 'static#show'
Marat Amerov
  • 406
  • 2
  • 9