#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 вы используете в подобных случаях.