2016-05-07 12 views
0

Entschuldigung für die grundlegende Frage, aber ich bin völlig neu in Rails und versuche, eine bestehende Anwendung zu debuggen.Rails URL-Parameter verstehen

Insbesondere Ich versuche, die URL Reverse-Engineering, mit dem folgenden Controller:

def find_by_foo 
    params.require(:foo).permit(:bar1, :bar2) 
end 

Die Route ist wie folgt:

get 'find_by_foo', on: :collection 

Und ich habe sogar eine spec:

Ich versuche herauszufinden, wie diese Parameter über meinen REST-Client übergeben werden. Ich habe versucht, die folgenden URL-Strukturen:

api/v1/collections/find_by_foo?foo={bar1: 0, bar2: 0} 
api/v1/collections/find_by_foo/foo/0/0 
api/v1/collections/find_by_foo?params={foo: {bar1: 0, bar2: 0}} 

Alle bis jetzt zur Verfügung. Wie ist die richtige Struktur hier?

Antwort

3

Meinst du das?

api/v1/collections/find_by_foo?foo[bar1]=0&foo[bar2]=0 

Eine Übersicht über diese in der auch ActionController Overview verfügbar ist

können Sie in der Konsole, rufen

app.find_by_foo_api_v1_collections_path(foo:{ bar1: 0, bar2: 0}) 

(oder was auch immer die Methode tatsächliche URL Helfer ist, bin ich einfach Raten basierend auf der Route), und Sie erhalten die CGI-maskierte Version des Pfades, den Sie verwenden können. Sie können das in CGI.unescape(...) zum leichteren Lesen umhüllen. ZB in meiner App:

2.2.2 > CGI.unescape(app.edit_many_ops_media_files_path(foo:{ bar1: 0, bar2: 0})) 
# => "/files/edit_many?foo[bar1]=0&foo[bar2]=0" 
0

Sie können die Routen ausdrucken und filtern nach find_by_foo, um die richtige Struktur zu sehen. Führen Sie dies in Terminal:

$ rake routes | grep find_by_foo 

Ich hoffe, dies hilft.

+0

Danke. Ja, aber das sagt mir nicht das Parameterformat. Es gibt mir nur: '/api/v1/foos/find_by_foo(.:format) api/v1/foos # find_by_foo' – JB2

+0

Sie können Ihre API durch den Besuch dieser URL: 'localhost: 3000/api/v1/foos/find_by_foo '.das Format könnte .js, .html, .xml, .json sein, hängt von Ihrer Implementierung in' FoosController's 'find_by_foo' Methode ab. – juanitofatas

+1

Danke juanitofatas. Es wäre JSON. – JB2