2016-06-22 14 views

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 
+0

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

+0

@ user2968505 exatly. – retgoat