Как написать маршрутизацию, когда имя модели ресурса не соответствует пути или контроллеру

У меня есть модель с именем ImplicitTest . Это называется как наличие объекта Ruby с именем Test просто ломает много вещей в Rails.

Тем не менее, я все еще хочу предоставить его как ресурс RESTful как test (например, / tests , / test / 1 / edit и т. Д.) . Кроме того, было бы неплохо оставить контроллер как TestsController , хотя это менее важно.

Я делал это, имея простую строку resources: tests в моем файле routes.rb, но это не удалось для форм RESTful (например, <% = form_for @test ...> - это определяет, что объект @test относится к типу ImplciitTest, и пытается найти implicit_test_path , которого не существует.

Я попытался добавить параметры form_for, но пришел к выводу, что для этого есть форма работает как для действий new , так и edit , не было единого унифицированного способа попросить form_for () использовать другой префикс для поиска имени пути.

Итак, я Я пытался подойти к проблеме со стороны маршрутизации. Есть ли строка, которую я могу добавить в файл маршрутов, которая позволит мне:

  1. Иметь модель под названием ImplicitTest
  2. Иметь путь как / test
  3. По-прежнему используйте тег <% = form_for @test ...%>
  4. Сохраните контроллер как TestsController (необязательно)

Я знаю, что выхожу с Золотого пути, чтобы сделать это, но Rails не позволяет мне использовать Tes t в качестве имени модели, но это имя, которое пользователи ожидают увидеть в URL-адресе этого ресурса, поэтому я надеюсь, что существуют простые параметры маршрутизации, которые позволяют это сделать.

10
задан Phantomwhale 20 January 2012 в 01:38
поделиться