Вы можете сделать следующее в вашем файле rout.rb, чтобы убедиться, что только действие show ограничено json или xml:
resources :categories, :except => [:show]
resources :categories, :only => [:show], :constraints => {:format => /(json|xml)/}
Если это не сработает, попробуйте явно сопоставить действие:
resources :categories, :except => [:show]
match 'categories/:id.:format' => 'categories#show', :constraints => {:format => /(json|xml)/}