PDA

Visualizza la versione completa : Errore: ActionController::RoutingError in Books#show


Vitacillina
20-03-2009, 22:04
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:



Errore pagina successiva per problemi di lunghezza.


Potete aiutarmi?
Grazie

Vitacillina
20-03-2009, 22:05
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: </p>
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:in `gem_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"}

weppos
22-03-2009, 12:05
Come hai scritto il file di routing?
Lì dice che non vuole l'ID per l'editing. :master:

PS. Ruby != Rails

Vitacillina
22-03-2009, 12:28
Sono un principiante scusa .... adesso dà un altro errore sulla pagina app/views/books/index.html.erb sulla riga rossa:


<h1>Listing books</h1>

<table>
<tr>
<th>Id</th>
<th>Titolo</th>
<th>Anno</th>
<th>Autore</th>
<th>Editore</th>
<th>Pagine</th>
<th>Prezzo</th>
<th>Isbn</th>
</tr>

<% @books.each do |book| %>
<tr>
<td><%=h book.ID %></td>
<td><%=h book.TITOLO %></td>
<td><%=h book.ANNO %></td>
<td><%=h book.AUTORE %></td>
<td><%=h book.EDITORE %></td>
<td><%=h book.PAGINE %></td>
<td><%=h book.PREZZO %></td>
<td><%=h book.ISBN %></td>
<td><%= link_to 'Show', book %></td>
<td><%= link_to 'Edit', edit_book_path(book) %></td>
<td><%= link_to 'Destroy', book, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>




<%= link_to 'New book', new_book_path %>

weppos
22-03-2009, 12:32
Forse se tu postassi anche l'errore... inoltre, aggiungi il file di Routing, senza quello non so dirti il problema. Apparentemente il codice è corretto.

Vitacillina
22-03-2009, 17:53
L'errore è questo:



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: </p>
40:
41:
42: <%= link_to 'Edit', edit_book_path(@book) %> |
43: <%= link_to 'Back', books_path %>


Qual'è il file di routing ?
In quale cartella si trova?

L'applicazione è l'img allegata.

weppos
22-03-2009, 18:12
Il file di routing si chiama routes.rb e si trova in config.

Vitacillina
22-03-2009, 18:18
Originariamente inviato da weppos
Il file di routing si chiama routes.rb e si trova in config.

OK grazie ho capito, ecco routes.rb:



ActionController::Routing::Routes.draw do |map|
map.resources :books

map.resources :books

# The priority is based upon order of creation: first created -> highest priority.

# Sample of regular route:
# map.connect 'products/:id', :controller => 'catalog', :action => 'view'
# Keep in mind you can assign values other than :controller and :action

# Sample of named route:
# map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
# This route can be invoked with purchase_url(:id => product.id)

# Sample resource route (maps HTTP verbs to controller actions automatically):
# map.resources :products

# Sample resource route with options:
# map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }

# Sample resource route with sub-resources:
# map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller

# Sample resource route with more complex sub-resources
# map.resources :products do |products|
# products.resources :comments
# products.resources :sales, :collection => { :recent => :get }
# end

# Sample resource route within a namespace:
# map.namespace :admin do |admin|
# # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
# admin.resources :products
# end

# You can have the root of your site routed with map.root -- just remember to delete public/index.html.
# map.root :controller => "welcome"

# See how all your routes lay out with "rake routes"

# Install the default routes as the lowest priority.
# Note: These default routes make all actions in every controller accessible via GET requests. You should
# consider removing the them or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end

weppos
22-03-2009, 18:21
Perché hai due


ActionController::Routing::Routes.draw do |map|
map.resources :books

map.resources :books

?

Apparentemente il codice è corretto.
Posta il codice dell'azione Books#show e quello del template corrispondente.

Vitacillina
22-03-2009, 18:38
Scusa non ho capito... dove trovo i files che mi chiedi?

Loading