Natalia, fijate que para cualquier recurso que quieras acceder de esta forma:
http://localhost:3004/products/ship
no lo tenés que poner en :member, sinó dentro de collection:
map.resource :products, :collection => {:ship => :get}
para que ande con member entonces deberias de acceder asi
http://localhost:3004/products/1/ship
map.resource :products, :collection => {:ship => :get}

Saludos,

Damian Garcia


2009/9/16 Natalia Gutierrez <[email protected]>:
> Hola a todos! una consulta sobre ruteo. Estoy siguiendo el libro Agile Web
> Development v2. Tengo un controlador products_controller.rb, al cual le
> agregue una accion "ship":
>
> class
> ProductsController < ApplicationController
>
> def
>
> index
>
> @product_pages
>
> = Product.paginate(:page => params[:page],
>
> :per_page
>
> => 2, :order => 'title ASC')
>
> respond_to
>
> do |format|
>
> format.html
>
> # index.html.erb
>
> format.xml { render
>
> :xml => @products }
>
> end
>
> end
>
> def show
>
> @product
>
> = Product.find(params[:id])
>
> respond_to
>
> do |format|
>
> format.html
>
> # show.html.erb
>
> format.xml { render
>
> :xml => @product }
>
> end
>
> end
>
> ...
>
> def
>
> ship
>
> @pending_orders
>
> = Order.pending_shipping
>
> end
>
> end
>
> Y este es mi archivo routes.rb:
>
> ActionController::Routing::Routes.draw
>
> do |map|
>
> map.resources
>
> :products
>
> map.connect
>
> ':controller/:action/:id'
>
> map.connect
>
> ':controller/:action/:id.:format'
>
> end
>
>
>
> El tema es que cuando quiero acceder con http://localhost:3004/products/ship
> , me tira el error:
>
> ActiveRecord::RecordNotFound in ProductsController#show  Couldn't find
> Product with ID=ship
>
> es decir, me esta tomando ship como parametro y no como funcion. Probe
> colocando:
>
> map.resource :products, :member => {:ship => :get}, pero si lo coloco antes
> de map.resources :products, me deja de funcionar el resto... y si lo coloco
> despues no hace nada.
>
> Espero respuestas.... Gracias
>
>
>
> Natalia Gutiérrez
> Ingeniería y Desarrollo
> ICOP Santa Fe S.R.L.
> Primera Junta 3057
> S3000CDM - Santa Fe
> (0342) 4526057 int. 140
> [email protected]
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas
> de virus 4430 (20090916) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a