2013-07-01 14 views
5

Sono la programmazione per la prima volta in Ruby e così sto facendo il tutorial 'iniziare' dal sito ufficiale:Rails guida introduttiva 5.7

http://guides.rubyonrails.org/getting_started.html

Ho un problema con la 5.7. Il tutorial dice:

Se si invia nuovamente il modulo ora, Rails si lamenta perché non trovare l'azione show. Non è molto utile, quindi aggiungiamo l'azione show prima di procedere.

E poi c'è il codice seguente:

messaggio GET /posts/:id(.:format) Risposte # mostrare

Ma dove devo inserire questo codice ?

Grazie!

risposta

6

Ciò che è stato illustrato è il membro show per i percorsi di risorse posts. In realtà non è un codice, ma piuttosto un pattern per il routing degli URL. Puoi vedere tutti i tuoi percorsi in questo modo digitando rake routes dalla riga di comando.

Abbattere il percorso:

post GET /posts/:id(.:format) posts#show 
# `post` => named route name (available by default only to singular routes) 
# `GET` => HTTP method 
# `/posts/:id(.:format)` => path made accessible by route 
# :id => specifies that the argument passed in as `:id` is available to the controller as `params[:id]` 
# `posts#show` => controller is `posts`, action is `show` 

È necessario creare una corrispondente azione show controller che il percorso sarà mappare:

# app/controllers/posts_controller.rb 
def show 
    @post = Post.find(params[:id]) 
end 
+0

ok, l'ho già fatto. Ma dopo, il tutorial dice di aggiungere quel codice ma non dice dove ... –

+1

La documentazione dice: "aggiungiamo l'azione show prima di procedere". Si riferisce all'azione 'show' del controller' posts'. È __not__ che si riferisce alla seguente riga, che non è nemmeno un codice. – zeantsoi

+0

Grazie, ho trovato un altro problema e ora che ho risolto, tutto funziona. –

1

Se avete la PostsController nell'applicazione, poi si deve avere il seguente nella config/routes.rb

resources :posts 

In modo che generi 7 route predefinite per il controller dei post in cui show è un'azione predefinita.

Quando si esegue rake routes nella console, verranno visualizzati tutti i percorsi per l'applicazione. Da quelle tratte, è possibile ottenere

post GET /posts/:id(.:format)      posts#show 

Quanto sopra sono i percorsi, non il codice. Quindi afferma che hai un controller chiamato "posts" e "show" è un'azione di esso. Che può essere accessibile tramite '/ posts /: id' con il metodo "get".

+1

L'OP ha indicato che hanno raggiunto la sezione 5.7 del tutorial. Presumibilmente, avranno già aggiunto 'risorse: post', poiché questo è specificato nella sezione 5. – zeantsoi

2

Mi sono imbattuto in questo stesso problema durante il tutorial. Una risposta più diretta a questa domanda è "no dove". Il riferimento a questa riga nel tutorial è solo informativo. Si legge in un modo che ti porta a credere che dovresti aggiungerlo ma non c'è nulla da aggiungere. Continua a seguire il resto del tutorial e tutto andrà bene. Forse un giorno l'autore lo leggerà e lo risolverà.

2

aggiunta la seguente frase (in grassetto) renderebbe le istruzioni in 5.7 più chiaro:

Se si invia nuovamente il modulo ora, Rails si lamenterà di non trovare l'azione spettacolo. Non è molto utile, quindi aggiungiamo l'azione show prima di procedere.disattivato 'risultati rastrello routes`now il seguente:

post GET /posts/:id(.:format) posts#show

1

Assicurarsi che la sezione privata viene dopo il blocco DEF spettacolo

class PostsController < ApplicationController 

def new 
end 

def create 
    #render text: params[:post].inspect 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
end 

def show 
    @post = Post.find(params[:id]) 
end 

private 
    def post_params 
    params.require(:post).permit(:title, :text) 
    end 

end 
0

Nulla deve essere aggiunto al file di configurazione, come alcuni hanno già detto, è l'informazione che appare dopo aver eseguito il comando

percorsi di rastrellamento

Basta aggiungere il mostrano azione al post_controller.rb e la vista show.html.erb è sufficiente per essere in grado di inviare le informazioni e continuare con l'esempio.

Problemi correlati