#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-запросы всегда должны иметь ответ. Просто отправьте ответ, в котором нет ничего интересного. Конечный пользователь, выполняющий запрос, может игнорировать ответ.