Rails 3: перенаправить ресурс на другое имя - PullRequest
23 голосов
/ 09 сентября 2010

У меня есть CRUD-контроллер для модели.

Выполнение resources :foo позволяет мне маршрутизировать на /foo/:id и т. Д. Для вызова действий.

Я хочу добавить маршрут дляперевод 'foo' на другой язык.Давайте скажем «toto».Поэтому я хочу, чтобы все маршруты /toto/:id и т. Д. Действовали точно так же, как маршруты /foo/:id и т. Д.

Как мне этого добиться?

Ответы [ 4 ]

37 голосов
/ 09 сентября 2010

Вы можете добавить новый ресурс и указать foo в качестве контроллера:

resources :toto, :controller=>"foo"

Это укажет все действия на "foo", но есть ошибка. Я думаю, что у вас возникнут проблемы со ссылками на странице, если вы используете foo_url или что-то в этом роде. Таким образом, вам нужно будет найти способ создания URL-адресов виртуально на основе контроллера в «request.path».

23 голосов
/ 27 апреля 2013

Это позволит вам переименовывать пути, которые видит пользователь, но сохранит в коде оригинальное имя ваших контроллеров:

scope(:path_names => { :new => "neu", :edit => "bearbeiten" }) do
  resources :categories, :path => "kategorien"
end

Из направляющих Ruby on Rails

4 голосов
/ 16 июня 2017

Если я вас правильно понимаю, вы хотите просто использовать другой путь.

resources :foo, path: 'toto'

Теперь у вас будет:

GET /toto          foo#index
GET /toto/:id      foo#show
...
0 голосов
/ 22 марта 2017

Вы можете достичь чего-то близкого к этому, используя область действия:

scope ':language/' do
  resources :foo, controller: 'bar_controller'
end

Это делает ваш bar_controller ресурсом что-нибудь / foo, где все передается как параметр: language.

так:

  • en_US / Foo
  • de_DE / Foo
  • ja_JP / foo

все они обрабатываются bar_controller с обычным отображением ресурсов, и вы получаете params [: language] в контроллере бесплатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...