Переопределение ресурсного маршрута в / (root) в Rails3: не меняя помощник по пути?

StackOverflow https://stackoverflow.com/questions/3796979

Вопрос

Я вполне новый для Rails3, я в основном создал subscribers Леса, я только хочу, чтобы мое приложение ответил на new а также create Действия.

Таким образом config/routes.rb Я определил:

Ресурсы: подписчики: Только: Только => [: NEW: CREATE

Который работает таким образом

Получить / подписчики => Подписчики # Новое сообщение / Подписчики => Подписчики # Создать

Теперь я хочу, чтобы мое приложение выставило ресурсы подписчиков в / (root) вместо /subscribers, Так вот то, что я сделал:

Подписчики '/' => "подписчики # Новый" Match '/' => "подписчики # Создать подписчики" Match '/' => "# Спасибо" Ресурсы: подписчики: Только => [: new,: create

Что-то как-то работает, но, вероятно, не самая сухая вещь: вот проблемы, которые у меня есть:

  1. Возвращаясь к форме после выпуска на создании браузера отображает /subscribers URL вместо просто просто /, форма создана с использованием form_for(@subscriber) метод помощника, поэтому path Помощник должен быть как-то не зависит от маршрута
  2. В идеале я даже не хочу приложение ответить на запрос на /subscribers
  3. Я заметил странную ошибку, при публикации формы при отключении (от /, а затем делать обновление, когда соединение возвращается (браузер просят повторную передачу => 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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top