2012-11-15 4 views
9

quando si digitarotaie rastrello rotte dove sono da

rake routes 

, e mazzo di percorsi viene fuori, ma dove sono definiti ???

So che alcuni sono predefiniti, e che dire degli altri?

Ad esempio, si tratta di uno script da un controller, ho provato a rimuovere "s" da do_qualcosa, ma non riesco a farlo funzionare .... sono definiti anche altrove? Inoltre, quando prendono i parametri e quando no, come lo conosco? Grazie!

def hello 
    redirect_to do_things_shop_path(shop) 
end 

def do_things 
end 
+0

I percorsi sono definiti nel file 'config/routes.rb'. – Brian

risposta

19

Rails configurazioni di routing sono tenuti in config/routes.rb file.

L'acquisizione dei parametri dipende da molte cose. rake routes mostrerà con percorsi prendere parametri. Le azioni dei membri prenderanno parametri.

posts GET  /posts(.:format)   posts#index 
     POST  /posts(.:format)   posts#create 
edit_post GET  /posts/:id/edit(.:format) posts#edit 

Nell'ultima riga, si URL tipo posts/:id/edit. Questo percorso richiede il parametro :id. Puoi chiamare questa rotta in molti modi. Uno di loro è come:

edit_post_path(@post) 

Se si desidera creare un'azione personalizzata, (diciamo sotto controllo i messaggi), è possibile dichiarare come segue:

match `/posts/:id/things_with_id`, :to => 'posts#do_things_with_id', :as => 'do_things_with_id 
match `/posts/things_without_id`, :to => 'posts#do_things_without_id', :as => 'do_things_without_id 

Prima si richiede un ID mentre il il secondo no. Chiamata di conseguenza:

do_things_with_id_path(@post) 

do_things_without_id() 

Per una risorsa, è possibile creare questi facilmente usando membro & azione di raccolta. L'azione del membro ha bisogno dell'ID mentre l'azione di raccolta non lo fa.

resources :posts do 
    member { get 'do_thing' } 
    collection { get do_things' } 
end 

spero che tu abbia capito.

A proposito, è necessario leggere la seguente guida se si desidera comprenderli chiaramente. http://guides.rubyonrails.org/routing.html