Переопределение ресурсного маршрута в / (root) в Rails3: не меняя помощник по пути?
-
05-10-2019 - |
Вопрос
Я вполне новый для Rails3, я в основном создал subscribers
Леса, я только хочу, чтобы мое приложение ответил на new
а также create
Действия.
Таким образом config/routes.rb
Я определил:
Ресурсы: подписчики: Только: Только => [: NEW: CREATE
Который работает таким образом
Получить / подписчики => Подписчики # Новое сообщение / Подписчики => Подписчики # Создать
Теперь я хочу, чтобы мое приложение выставило ресурсы подписчиков в /
(root) вместо /subscribers
, Так вот то, что я сделал:
Подписчики '/' => "подписчики # Новый" Match '/' => "подписчики # Создать подписчики" Match '/' => "# Спасибо" Ресурсы: подписчики: Только => [: new,: create
Что-то как-то работает, но, вероятно, не самая сухая вещь: вот проблемы, которые у меня есть:
- Возвращаясь к форме после выпуска на создании браузера отображает
/subscribers
URL вместо просто просто/
, форма создана с использованиемform_for(@subscriber)
метод помощника, поэтомуpath
Помощник должен быть как-то не зависит от маршрута - В идеале я даже не хочу приложение ответить на запрос на
/subscribers
- Я заметил странную ошибку, при публикации формы при отключении (от
/
, а затем делать обновление, когда соединение возвращается (браузер просят повторную передачу => OK), приложение Rails аварии (у меня нет стека ошибок, хотя, как это было на производстве), почему это было?
Кроме того, я пытался создать маршрут таким образом:
Ресурсы: Подписчики: Только только => [: NEW,: CREATE] Коллекция DO POST '/' =>: Создать Get '/' =>: новый конец
Который, вероятно, сушилка, но это не исправляет никаких из этих проблем.
Я уверен, что это что-то довольно просто, пожалуйста, помогите!
Решение
Спасибо за ваши ответы, это помогло мне найти точное решение моего вопроса:
Ресурсы: подписчики: Только: Только => [: NEW: CREATE]: Path => '',: path_names => {: new => ''}
Проверено и работает на рельсах 3 :)
Другие советы
Вы могли бы сделать
resources :subscribers, :path => ''
и убедитесь, что GET /
обслуживается вашим корневым шаблоном, например, добавив это к подписчикамController:
def index
render 'welcome/index'
end
Я экспериментировал с использованием match "/"
Декларация Чтобы переопределить действие индекса ресурса и сопоставить его другому контроллеру, но видимо resources
Декларация всегда полностью переопределяет вручную объявленные маршруты.
Для номера 2 в вашем списке удалите эту строку и перепишите любые методы _Path или _URL в вашей ERB:
resources :subscribers, :only => [:new, :create]