Подтвердить что ты не робот

Rails 3: response_with ошибки в undefined URL-адрес помощника

У меня есть модель Artwork, которая теперь обрабатывается только конечными точками API. (Вы поймете, почему это важно в ближайшее время). Эти конечные точки API объявляются так в моем файле routes.rb:

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

Это приводит к следующим маршрутам:

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}

Соответствующий код:

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

    respond_with artwork
  end

Проблема

Когда #create преуспеть, respond_with захлопывает:

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

Ожидается, что помощником для HTTP-местоположения будет artwork_url. Как я могу вместо этого использовать api_v1_artwork_url? Могу ли я использовать хелпер URL-адреса?

4b9b3361

Ответ 1

В этом случае вам нужно указать пространство имен для ответчика. Попробуйте:

respond_with :api, :v1, artwork