11546
Ruby on Rails のルーティングについてです。  
複数の半静的ページを1つのコントローラーで制御しようとしています。  
config/routes.rb に全ページ分 get メソッドを書くのも辛いので、下記のように書きました。

```

      StaticPagesController.action_methods.each do |action|
        match action,
          action: action,
          controller: :static_pages,
          via: :get,
          as: action
      end
    
```

しかし、これでは階層を持った URL に対応できません。(example.com/foo/bar)  
1つ1つ get 'foo/bar' => 'static_pages#bar' のように書く以外に解決法はないでしょうか。  
完全に初心者なので「ない」もしくは「設計上好ましくない」ということだけでも確認したいです。

以上、よろしくお願い致します。

* * *

追記

StaticPagesController で、  
example.com/page1 と、  
example.com/foo/page2 と、  
example.com/foo/bar/page3 の  
全アクションを書くのが目的です。  
コントローラーのコードは下記のようなイメージです。

```

    class StaticPagesController < ApplicationController
      def page1
      end
    
      def page2
      end
    
      def page3
      end
    end
    
```

ただし、できることなら

```

    get 'page1' => 'static_pages#page1', 
    get 'foo/page2' => 'static_pages#page2', 
    get 'foo/bar/page3' => 'static_pages#page3'
    
```

と一つずつ書くのは避けたいです。
CC BY-SA 3.0
2015-06-19T09:54:45.303
11518
2015-06-20T03:57:51.207
2015-06-19T13:01:04.443
10215
10215
question
ruby-on-rails
Rails 4.2 階層を持った URL の静的ページを1つのコントローラーでルーティングしたい
Railsの Route Globbing を使ってはいかがでしょうか？

参考サイト  
<http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-
segments>

### Route Globbingの例

config/routes.rb

```

    get '*path', to: 'pages#show'
    
```

app/controllers/pages_controller.rb

```

    class PagesController < ApplicationController
        def show
            @path = params[:path]
        end
    end
    
```

app/views/pages/show.html.erb

```

    <%= @path %>
    
```
CC BY-SA 3.0
2015-06-20T03:31:42.897
11546
2015-06-20T03:57:51.207
2015-06-20T03:57:51.207
10150
10150
11518
answer