

わかりにくいタイトルですみません。

サブディレクトリでカテゴリを指定し、それぞれで構成が同一のサイトを運営したいと考えています。  
例えば、example.com/car/articles が車に関する記事一覧、example.com/car/shops が車販売店一覧  
example.com/bike/articles がバイクに関する記事一覧、example.com/bike/shops
がバイク販売店一覧のような感じです。

/categories/(car|bike) のよにすれば良いではないかと突っ込まれそうですが、carのトップページをexample.com/car
に、bikeのトップページをexample.com/bike に集中させようと考えているため、/car、/bike
の下に、restfulなURL設計を行いたいと考えています。  
ちなみにcar,bikeにかかわらず、それ以下の構成は同一にしようと考えています。

現在、

[code]

    namespace :main, :path => "/:category" do
      resources :articles
      resources :shops
    
[/code]

のようにroutesを設定しており、リンクを貼る際は

[code]

    = link_to "name", [:main, @article, :category => @category_name]   # @category_name = params[:category]
    
[/code]

のような形で何とか動いているのですが、:category を指定するのが冗長な気がします。  
こういったケースをうまく処理するgood practiceはあるのでしょうか。

ご教示お願いします。


CC BY-SA 3.0
2015-05-28T15:48:40.543
10733
2018-06-23T12:27:54.963
9919
question
ruby-on-rails ruby
Rails(4.2) でカテゴリ毎にサブディレクトリでサイトを構成する方法について


自分が同じ状況でしたら、下記のように書くと思います。

[code]

    %i(car bike).each do |category|
       namespace category do
         resources :articles
         resources :shops
       end
    end
    
[/code]

そうすると、下記のように routes が生成されます。

[code]

    car_articles GET    /car/articles(.:format)           car/articles#index
    ....
    bike_articles GET    /bike/articles(.:format)          bike/articles#index
    
[/code]

確認していませんが、下記で動くかも……？

[code]

    = link_to "name", [@category_name, @article]
    
[/code]


CC BY-SA 3.0
2015-05-30T12:47:03.803
10796
2015-05-30T12:47:03.803
7471
10733
answer