Railsのroutes.rbでnamespaceとscopeを設定できるんですが、こんな違いがあります。
namespace
TestConrollerのReadアクションにアクセスしたいわけなんだけど、
routes.rbに
namespace :v3 do
get "/test/read",:to=>"test#read"
end
とか書くと
GET /v3/test/read(.:format) v3/test#read
こうなります。
v3フォルダの下のTestControllerにアクセスしにいきます。
scope
scopeだけを設定するといつものappフォルダの下にあるコントローラにアクセスしにいきます。
scope :v3 do
get "/test/read",:to=>"test#read"
end
とか書くと
GET /v3/test/read(.:format) test#read
あえてフォルダの一個下ぽいURLを作りたいときなんかに使えそうですね。/adminとか/auth、またはAPIなんかに。
Rails5で検証
Rails5になったので検証してみました。
12 namespace :artists do
13 get 'similars/index'
14 get 'similars/show'
15 get 'tags/index'
16 get 'tags/show'
17 end
僕が現在書いているソースコードの抜粋ですが、これだと
/artists/simmilar/index
とかでアクセスできました。
Rails6で検証
Rails6になったので検証してみました。
12 namespace :artists do
13 get 'similars/index'
14 get 'similars/show'
15 get 'tags/index'
16 get 'tags/show'
17 end
こちらも
/artists/simmilar/index
とかでアクセスできました。