Errore: ActionController::RoutingError in Books#show


#1

Ciao a tutti.

Sono alle prime armi con Ruby e devo dire che è molto interessante: sti
studiando su un testo di Filippo Costalli completo e scorrevole.

Sono riuscito a creare il primo script che interagisce con un db mysql.

Però ho un problema nell’inserimento dei dati nel db mysql: i dati
vengono registrati in mysql però appare quest’errore che non so cosa
sia:

ActionController::RoutingError in Books#show
Showing app/views/books/show.html.erb where line #42 raised:

edit_book_url failed to generate from {:action=>“edit”,
:controller=>“books”, :id=>#<Book ID: 3, TITOLO: “c”, ANNO: 2009,
AUTORE: “c”, EDITORE: “c”, PAGINE: 10, PREZZO:
#BigDecimal:381e0cc,‘0.1036E2’,8(8), ISBN: 12>}, expected:
{:controller=>“books”, :action=>“edit”}, diff: {:id=>#<Book ID: 3,
TITOLO: “c”, ANNO: 2009, AUTORE: “c”, EDITORE: “c”, PAGINE: 10, PREZZO:
#BigDecimal:381d578,‘0.1036E2’,8(8), ISBN: 12>}

Extracted source (around line #42):

39:


40:
41:
42: <%= link_to ‘Edit’, edit_book_path(@book) %> |
43: <%= link_to ‘Back’, books_path %>

RAILS_ROOT: C:/biblioteca

Application Trace | Framework Trace | Full Trace
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-

C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in
run' C:/Ruby/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111 C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:ingem_original_require’
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require’
script/server:3
Request
Parameters:

{“id”=>“3”}

Show session dump


Response
Headers:

{“Content-Type”=>“text/html”,
“Cache-Control”=>“no-cache”}

Potete aiutarmi?
Grazie


#2

controlla le tue routes, da console se sei nella root della tua
applicazione puoi lanciare
rake routes

la prima cosa che mi viene in mente è che non hai definito le tue
routes restful, in routes.rb dovresti avere questa linea

map.resources :books

prova a lanciare rake routes e vedi se ci sono.

Q


#3

Andrea C. wrote:

controlla le tue routes, da console se sei nella root della tua
applicazione puoi lanciare
rake routes

la prima cosa che mi viene in mente � che non hai definito le tue
routes restful, in routes.rb dovresti avere questa linea

map.resources :books

prova a lanciare rake routes e vedi se ci sono.

Q

Grazie, ti allego la schermata restituita dall’applicazione.


#4

le routes sembrano a posto anche se lo screenshot è medievale :]
pastie è una buona alternativa http://pastie.org/

forse ci sono, se non ho capito male tu fai il render di quella pagina
dopo la creazione giusto?
controlla che @book non sia vuoto, nel metodo show dovresti aver
definito in questo modo

@book = Book.find(params[:id])

nella create controlla di fare un redirect e non un render, il render
elabora semplicemente la vista, il redirect richiama prima il metodo
relativo, se tu per la show fai solo il render @book non viene
inizializzata.

Q


#5

Andrea C. wrote:

le routes sembrano a posto anche se lo screenshot è medievale :]
pastie è una buona alternativa http://pastie.org/

forse ci sono, se non ho capito male tu fai il render di quella pagina
dopo la creazione giusto?
controlla che @book non sia vuoto, nel metodo show dovresti aver
definito in questo modo

@book = Book.find(params[:id])

nella create controlla di fare un redirect e non un render, il render
elabora semplicemente la vista, il redirect richiama prima il metodo
relativo, se tu per la show fai solo il render @book non viene
inizializzata.

Q

Scusa sono un principante… cosa devo fare? dove trovo il metodo show?
Grazie


#6

Andrea C. wrote:

L’ errore che ritorna ti dice tutto, controller books metodo show

Showing app/views/books/show.html.erb where line #42 raised:

Grazie per la pazienza.

Questa è la pagina show.html.erb:

Id: <%=h @book.ID %>

Titolo: <%=h @book.TITOLO %>

Anno: <%=h @book.ANNO %>

Autore: <%=h @book.AUTORE %>

Editore: <%=h @book.EDITORE %>

Pagine: <%=h @book.PAGINE %>

Prezzo: <%=h @book.PREZZO %>

Isbn: <%=h @book.ISBN %>

<%= link_to ‘Edit’, edit_book_path(@book) %> |
<%= link_to ‘Back’, books_path %>


#7

L’ errore che ritorna ti dice tutto, controller books metodo show

Showing app/views/books/show.html.erb where line #42 raised: