2012-09-28 7 views
24

Tengo un modelo Artwork que solo está manipulado por los puntos finales API en este momento. (Verás por qué esto es importante en breve). Esos puntos finales de API se declaran como tal en mi archivo routes.rb:Rails 3: responda_con errores en el ayudante URL indefinido

namespace :api do 
    namespace :v1, :defaults => { :format => :json } do 
    resources :artworks, :only => [:create, :destroy, :index, :show, :update] 

Esto se traduce en las siguientes rutas:

api_v1_artworks GET  /api/v1/artworks(.:format)            api/v1/artworks#index {:format=>:json} 
       POST  /api/v1/artworks(.:format)            api/v1/artworks#create {:format=>:json} 
api_v1_artwork GET  /api/v1/artworks/:id(.:format)           api/v1/artworks#show {:format=>:json} 
       PUT  /api/v1/artworks/:id(.:format)           api/v1/artworks#update {:format=>:json} 
       DELETE  /api/v1/artworks/:id(.:format)           api/v1/artworks#destroy {:format=>:json} 

código relevante:

class Api::V1::ArtworksController < Api::V1::ApiController 
    def create 
    artwork = Artwork.create(artwork_params) 

    respond_with artwork 
    end 

El problema

Cuando #create tiene éxito, respond_with ahoga:

`undefined method `artwork_url' for #<Api::V1::ArtworksController:0x007fea1b4c67f8>` 

Se está esperando el ayudante para la ubicación de HTTP para ser artwork_url. ¿Cómo le digo que use api_v1_artwork_url en su lugar? ¿Puedo alias el URL helper?

Respuesta

35

En este caso, necesitaría especificar el espacio de nombres para el respondedor. Proveedores:

respond_with :api, :v1, artwork 
+1

acaba de encontrar este problema y estoy un poco confundido sobre por qué tenemos que añadir el espacio de nombres .. no se puede encontrar en la documentación oficial (o tal vez pasado por alto) – giosakti

+0

Querrá lea sobre rutas polimórficas: http://ryanbigg.com/2012/03/polymorphic-routes/, http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html – rossta

+0

No funciona. solo obtiene el "método indefinido' api_RESOURCE_url 'para # " – ajbraus

Cuestiones relacionadas