Ich möchte nur einige Änderungen an den Daten vornehmen, wenn es eine POST- oder eine PATCH-Anfrage ist. In dieser Frage (Ruby on Rails 3: How to retrieve POST and GET params separatly?) gibt es eine Möglichkeit, POST- und GET-Parameter zu erhalten, aber ich habe gesucht, und es scheint keine Möglichkeit zu geben, nur PATCH-Daten zu erhalten.Ruby on Rails: Wie nur POST und PATCH-Parameter abgerufen werden
0
A
Antwort
1
ActionDispatch::Request eine Reihe von Methoden haben HTTP Verb zu überprüfen, diejenigen umfassen: get?
, post?
, patch?
und put?
.
Also folgend sollte es tun:
def some_action
request.patch? # only patch requests
# or
request.request_method == :patch
# and if you are intrested in both PATCH and POST... combine them!
request.patch? || request.post?
end
Beachten Sie, dass Sie vielleicht an Ihren Routen Definition in Einschränkung verwendeten HTTP-Verb Interessenten werden. Definieren Sie Ihre Aktionen mit einem bestimmten Verb beschränkt Anfragen, die aus nicht das gleiche Verb verwenden verarbeitet werden:
# routes.rb
put '/orders/:id/refuse' => 'orders#refuse'
# so your refuse method accepts only PUT requests
1
Ich glaube, das wird es tun:
# in some controller's method
if request.patch? || request.post?
# do your work here
end
Also, wenn ich das params Objekt zugreifen innerhalb der if-Anweisung, es ist garantiert, dass es nur Daten haben wird, die entweder von PATCH oder POST und kein GET zum Beispiel sind? – user2968505
@ user2968505 exatly. – retgoat