Как обрабатывать запросы get и post с помощью одной строки в routes.rb в rails 4

#ruby-on-rails

#ruby-on-rails

Вопрос:

Как обрабатывать запросы get и post в одной строке.

У меня есть одно определение (тест) в контроллере (учетные записи). Это определение может быть вызвано либо запросом get, либо запросом post. Но я хотел бы определить это в одной строке в файле routes.rb.

Теперь я делаю так,

ресурсы: учетные записи делают

  collection do

  get 'test'

  post 'test'

 end
  

конец

что является наихудшим случаем. Если у меня есть больше определений в контроллере, мне нужно указать два раза для каждого определения.

Пожалуйста, предоставьте мне решение.

Ответ №1:

вы должны использовать методы get , post , put , patch и delete , чтобы ограничить маршрут определенным глаголом. Вы можете использовать match метод с :via возможностью одновременного сопоставления нескольких глаголов:

 match 'photos', to: 'photos#show', via: [:get, :post]
  

Вы можете сопоставить все глаголы с определенным маршрутом, используя via: :all:

 match 'photos', to: 'photos#show', via: :all
  

Например:

 match '/list' => 'products#products_list', :as => 'products_list' , via: [:get, :post]
  

Ссылка

Комментарии:

1. Когда я объявляю это в файле routes.rb, отображается ошибка типа » Unexpected ‘:’ » в netbeans.

2. смотрите Пример в моем ответе.. заменить на: с =>

3. Получение этого исключения… неопределенная локальная переменная или метод `via’ для #<ActionDispatch::Routing::Mapper:0x007fc2fb7f0a88>

4. Вероятно, вам via: [...] тоже нужно заменить :via => [...] на. Стоит упомянуть, какую версию ruby и какую версию rails вы используете в подобных случаях.