2011-10-06 11 views
8

Ho appena installato Ruby on Rails e creato uno scaffold chiamato posts. Controller generati da RoR e altri file richiesti per me.Come modificare le rotte nel rubino sulle rotaie?

Ho creato un nuovo metodo in posts_controller, ma non riesco ad accedervi. Ho esaminato altri metodi che sono nel controller e sembra che ho bisogno di accedervi da /posts/[MY POST ID]/[MY METHOD NAME].

Supponendo di aver creato il mio metodo personalizzato hello nel controller, come posso accedervi?

Ho guardato routes.rb, ma non c'è alcuna configurazione per questo.

Aggiornato:

capisco che posso configurare manualmente in routes.rb, ma come tutti gli altri metodi di lavoro? Ad esempio, ho i metodi "edit" e "update" nel controller "posts_controller.rb". Come funzionano questi due metodi senza configurare le rotte?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

non riesco a trovare una configurazione che corrisponde /posts/[0-9]/edit modello.

risposta

9

La documentazione che stai cercando è Rails Routing From the Outside In. Una volta letto questo capirai tutto ciò che Rails fa per prendere la tua richiesta e indirizzarla al metodo nel tuo controller.

3

In Rails 3.x

match 'posts/hello' => 'posts#hello'

Disponibile a example.com/posts/hello

4

questo vi darà un buon inizio di testa sulle rotte: http://guides.rubyonrails.org/routing.html

Non tutti il metodo che crei avrà il suo percorso, le rotaie sono costruite sul principio del riposo e il tuo scaffold ha creato metodi nel post controller che seguono quei percorsi, come indice, mostra ecc ....

È possibile forzare il metodo per aggiungere una route, ma in realtà raramente è necessario farlo in quanto seguire la convenzione è molto più semplice.

5

È necessario aggiungere un percorso per esso a routes.rb. Per esempio:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

Date un'occhiata a questo Rails guide about routing, che dovrebbe aiutare a capire Rails routing.

1

Quando si è utilizzato lo scaffold per generare post, è stata aggiunta una riga resources :posts nel file routes.rb. Questa linea configura i percorsi per tutte le azioni del controller che sono state generate. Come Caleb menziona sopra, non tutte le azioni hanno un percorso dedicato. Un singolo percorso può corrispondere a più azioni poiché anche le rotaie prendono in considerazione il metodo HTTP. Quindi, ad esempio, il percorso /posts con il metodo HTTP GET corrisponde all'azione del controller index, mentre lo stesso percorso con il metodo HTTP PUT corrisponde all'azione del controller update. È possibile visualizzare queste associazioni quando si esegue rake routes dalla console.Sono d'accordo con Jordan e Caleb che le Guide di Rails sono una buona lettura e ti aiuteranno a capire i percorsi.

+0

// Grazie per la risposta !. In che modo ROR configura le rotte semplicemente leggendo una riga di codice (risorse: post)? – Moon

+0

Non ho guardato il codice sorgente per vedere esattamente come lo fa Rails, ma quando usi le "risorse" Rails imposta 7 rotte. Controlla la sezione 2.2 della guida di cui sopra: http://guides.rubyonrails.org/routing.html – John

+0

Non ho mai trovato una spiegazione migliore sulle basi dei percorsi rispetto a questa: https://www.youtube.com/watch? v = g3SuV-A9bak & index = 3 & list = PLAC08CE3187BC75F1 – Mauddev

Problemi correlati