【问题标题】:Rails 3: respond_with errors on undefined URL helperRails 3:未定义的 URL 帮助程序上的 respond_with 错误
【发布时间】:2012-09-29 05:16:43
【问题描述】:

我有一个 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 助手设置别名吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    在这种情况下,您需要为响应者指定命名空间。试试:

    respond_with :api, :v1, artwork
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2018-11-25
    • 2013-07-20
    • 2015-01-06
    • 2012-05-18
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多