Как выполнить почти обратную отправку в rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я не знаю, как это назвать, за исключением того, что это почти обратная передача. Я бы хотел, чтобы мое приложение rails могло независимо получать запрос откуда-либо еще в Интернете в виде:

 myapp.com/count?id=45amp;sex=y
  

И иметь возможность выполнять некоторые вычисления (обновлять некоторую таблицу и т.д.) И не утруждать себя ответом.

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

Я настроил контроллер «count», но ему нужно перейти к какому-либо виду или веб-странице. Тогда я подумал, может быть, routes могли бы это сделать? Но это кажется плохой идеей иметь код в маршрутах.

Любые идеи приветствуются.

Ответ №1:

В вашем контроллере методов сделайте это:

 def method_count
  #do calculation stuff
  render :nothing => true
end
  

Это вернет статус 200 (если все было в порядке) и ничего не будет отображено.

Не забудьте настроить свой маршрут в config / routes.rb

Ответ №2:

Для вызовов API рекомендуется возвращать только код состояния HTTP, если содержимое не было запрошено. Вы можете сделать это с помощью head метода в ActionController::Base.

 def count
  # do work
  head :success
end
  

Ответ №3:

Вы должны создать контроллер и поместить в него свое действие!

В config/routes.rb :

 get "yourcontroller/count"
  

В yourcontroller.rb :

 def count
  #some code treating params
end
  

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

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

2. Попробуйте завершить свое действие «render: ничего => true»

3. HTTP-запросы всегда должны иметь ответ. Просто отправьте ответ, в котором нет ничего интересного. Конечный пользователь, выполняющий запрос, может игнорировать ответ.